public static void MergeFiles(string mainFile, string appendFile, bool annotation) { if (MergeFilesByCopy(mainFile, appendFile)) { return; } RasterCodecs codec = new RasterCodecs(); RasterImage image = null; RasterTagMetadata[] tagsData = null; // stores the annotatin RasterImage image2 = null; try { // load the image and annotation information for the // append file. image = codec.Load(appendFile); int pageCount = image.PageCount; if (annotation) { tagsData = new RasterTagMetadata[pageCount]; for (int i = 0; i < pageCount; ++i) { tagsData[i] = codec.ReadTag(appendFile, i + 1, RasterTagMetadata.AnnotationTiff); } } StatusForm statusForm = new StatusForm(); statusForm.LoadFormData(appendFile, mainFile, pageCount); statusForm.Show(); statusForm.Refresh(); image2 = codec.Load(mainFile); int mainPageNumber = image2.PageCount; for (int i = 0; i < pageCount; ++i) { codec.Save(image, mainFile, RasterImageFormat.CcittGroup4, 1, i + 1, i + 1, 1, CodecsSavePageMode.Append); if (annotation) { if ((tagsData != null) && (tagsData[i] != null)) { codec.WriteTag(mainFile, mainPageNumber + i + 1, tagsData[i]); } } statusForm.ShowPageInfo(i); } statusForm.Close(); } finally { if (image != null) { image.Dispose(); } if (image2 != null) { image2.Dispose(); } } }
private static void DoExtraction(string srcFileName, string destFileName, int[] pageNumList, bool annotation) { RasterCodecs codec = new RasterCodecs(); RasterImage image = null; RasterTagMetadata[] tagsData = null; try { image = codec.Load(srcFileName); int pageCount = image.PageCount; if (annotation) { tagsData = new RasterTagMetadata[pageCount]; for (int i = 0; i < pageCount; ++i) { tagsData[i] = codec.ReadTag(srcFileName, i + 1, RasterTagMetadata.AnnotationTiff); } } int listCount = pageNumList.Length; if (File.Exists(destFileName)) { File.Delete(destFileName); } StatusForm statusForm = new StatusForm(); statusForm.LoadFormData(srcFileName, destFileName, listCount); statusForm.Show(); statusForm.Refresh(); for (int i = 0; i < listCount; ++i) { codec.Save(image, destFileName, RasterImageFormat.CcittGroup4, 1, pageNumList[i], pageNumList[i], i, CodecsSavePageMode.Append); if (annotation) { if ((tagsData != null) && (tagsData[pageNumList[i] - 1] != null)) { codec.WriteTag(destFileName, i + 1, tagsData[pageNumList[i]-1]); } } statusForm.ShowPageInfo(pageNumList[i]); } if (image.PageCount > listCount) { int deleteCount = 0; for (int i = 1; i <= pageCount; ++i) { if (PageNumberFound(i, pageNumList)) { image.RemovePageAt(i+deleteCount); deleteCount--; } } codec.Save(image, srcFileName, RasterImageFormat.CcittGroup4, 1, 1, image.PageCount, 1, CodecsSavePageMode.Overwrite); if (annotation) { int newPageIndex = 0; for (int i = 0; i < pageCount; ++i) { if (!PageNumberFound(i+1, pageNumList) && (tagsData != null) && (tagsData[i] != null)) { codec.WriteTag(srcFileName, ++newPageIndex, tagsData[i]); } } } } else { File.Delete(srcFileName); } statusForm.Close(); } finally { if (image != null) { image.Dispose(); } } }
private static void DoExtraction(string srcFileName, string destFileName, int[] pageNumList, bool annotation) { RasterCodecs codec = new RasterCodecs(); RasterImage image = null; RasterTagMetadata[] tagsData = null; try { image = codec.Load(srcFileName); int pageCount = image.PageCount; if (annotation) { tagsData = new RasterTagMetadata[pageCount]; for (int i = 0; i < pageCount; ++i) { tagsData[i] = codec.ReadTag(srcFileName, i + 1, RasterTagMetadata.AnnotationTiff); } } int listCount = pageNumList.Length; if (File.Exists(destFileName)) { File.Delete(destFileName); } StatusForm statusForm = new StatusForm(); statusForm.LoadFormData(srcFileName, destFileName, listCount); statusForm.Show(); statusForm.Refresh(); for (int i = 0; i < listCount; ++i) { codec.Save(image, destFileName, RasterImageFormat.CcittGroup4, 1, pageNumList[i], pageNumList[i], i, CodecsSavePageMode.Append); if (annotation) { if ((tagsData != null) && (tagsData[pageNumList[i] - 1] != null)) { codec.WriteTag(destFileName, i + 1, tagsData[pageNumList[i] - 1]); } } statusForm.ShowPageInfo(pageNumList[i]); } if (image.PageCount > listCount) { int deleteCount = 0; for (int i = 1; i <= pageCount; ++i) { if (PageNumberFound(i, pageNumList)) { image.RemovePageAt(i + deleteCount); deleteCount--; } } codec.Save(image, srcFileName, RasterImageFormat.CcittGroup4, 1, 1, image.PageCount, 1, CodecsSavePageMode.Overwrite); if (annotation) { int newPageIndex = 0; for (int i = 0; i < pageCount; ++i) { if (!PageNumberFound(i + 1, pageNumList) && (tagsData != null) && (tagsData[i] != null)) { codec.WriteTag(srcFileName, ++newPageIndex, tagsData[i]); } } } } else { File.Delete(srcFileName); } statusForm.Close(); } finally { if (image != null) { image.Dispose(); } } }
private void OnSplitDocumentItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e) { try { InboundDocsView current = GetCurrentSelectedRow(); if (current == null) { XtraMessageBox.Show("Please select a document to split."); return; } var originalDocDto = imagesDal.GetByDocId(current.Id, ImagesDtoType.Inbound); if (originalDocDto == null) { XtraMessageBox.Show("Unable to find an inbound document for Id: " + current.Id); return; } var markupTifImage = originalDocDto.GetMarkupTifImage(); if (markupTifImage.TotalPages <= 1) { XtraMessageBox.Show("Unable to split documents that are less than 2 pages."); return; } PageSelection pageSelect = new PageSelection(markupTifImage); pageSelect.ShowDialog(); var pages = pageSelect.Pages; if (pages == null || !pages.Any() || pages.Count >= markupTifImage.TotalPages) { Logger.Debug("Nothing to split because there are either no pages selected or all pages selected."); return; } DocumentSplitter splitter = new DocumentSplitter(); StatusForm statusForm = new StatusForm(); statusForm.Show(); statusForm.Refresh(); statusForm.LoadFormData("", "", markupTifImage.TotalPages); var splitResult = splitter.Split(markupTifImage, pages, i => { statusForm.ShowPageInfo(i); }); if (splitResult == null) return; PersistDocumentSplit(current, splitResult, originalDocDto); } catch (Exception ex) { LogAndDisplayException("An error occurred while splitting the document." + Environment.NewLine + "Error CNF-528 in " + FORM_NAME + ".OnSplitDocumentItemClick().", ex); //Israel 12/15/2015 -- I assume the following are here by mistake, since they perform the same function as the preceding. //Logger.Error("Error splitting document:" + ex.Message, ex); //XtraMessageBox.Show("Error splitting document:" + ex.Message); } }