diff --git a/PROMS/Volian.Print.Library/MergedPdf.cs b/PROMS/Volian.Print.Library/MergedPdf.cs index 91c33361..1ff8d780 100644 --- a/PROMS/Volian.Print.Library/MergedPdf.cs +++ b/PROMS/Volian.Print.Library/MergedPdf.cs @@ -42,6 +42,7 @@ namespace Volian.Print.Library // selects the 'Merge' button off of the print dialog when doing a Print All. (C2019-012) public class MergedPdf { + private static readonly log4net.ILog _MyLog = log4net.LogManager.GetLogger(System.Reflection.MethodBase.GetCurrentMethod().DeclaringType); private List _mergedPdfs = null; // This list has all procedure pdfs that will be included in the merged file. public List MergedPdfs { @@ -116,31 +117,40 @@ namespace Volian.Print.Library FlexibleMessageBox.Show("Error in finding pdf files to merge. Cannot print with date/time as part of pdf name. Or check that individual pdfs were generated.", "Error on CreatePdf", MessageBoxButtons.OK, MessageBoxIcon.Warning); return false; } - PdfReader reader = new PdfReader(_folder + @"\" + mpp.PdfFileName); - int numPages = reader.NumberOfPages; - int currentPageNumber = 0; - PdfOutline outline = null; - do // merging pages into complete... + PdfReader reader = null; + try // B2019-041: added a try/catch for when a corrupt pdf was created for a procedure, just skip & add message to error log. { - currentPageNumber += 1; - mergedPageNumber += 1; - doc.SetPageSize(PageSize.LETTER); - doc.NewPage(); - PdfImportedPage page = writer.GetImportedPage(reader, currentPageNumber); // gets a page that is 'ready' to be written to combined pdf - if (doPageNum) // get the string & fill in with and numbers + reader = new PdfReader(_folder + @"\" + mpp.PdfFileName); + int numPages = reader.NumberOfPages; + int currentPageNumber = 0; + PdfOutline outline = null; + do // merging pages into complete... { - string outputpageof = _pageof.Replace("", mergedPageNumber.ToString()).Replace("", totalPages.ToString()); - AddPageNumberToPage(page, canvas, outputpageof); - } - PdfDestination dest = new PdfDestination(PdfDestination.FIT); - // if on the first page, add the pdfname & title as part of outline. If on remaining pages, just put out page number. - // Later this may need expanded to put sections/steps/etc. - if (currentPageNumber == 1) - outline = new PdfOutline(canvas.RootOutline, dest, mpp.PdfFileName.Replace(".pdf", "")+" - "+mpp.Title, false); - else - new PdfOutline(outline, dest, "Page " + currentPageNumber.ToString(), false); - canvas.AddTemplate(page, 0, 0); // adds the page to the combined pdf - } while (currentPageNumber < numPages); + currentPageNumber += 1; + mergedPageNumber += 1; + doc.SetPageSize(PageSize.LETTER); + doc.NewPage(); + PdfImportedPage page = writer.GetImportedPage(reader, currentPageNumber); // gets a page that is 'ready' to be written to combined pdf + if (doPageNum) // get the string & fill in with and numbers + { + string outputpageof = _pageof.Replace("", mergedPageNumber.ToString()).Replace("", totalPages.ToString()); + AddPageNumberToPage(page, canvas, outputpageof); + } + PdfDestination dest = new PdfDestination(PdfDestination.FIT); + // if on the first page, add the pdfname & title as part of outline. If on remaining pages, just put out page number. + // Later this may need expanded to put sections/steps/etc. + if (currentPageNumber == 1) + outline = new PdfOutline(canvas.RootOutline, dest, mpp.PdfFileName.Replace(".pdf", "") + " - " + mpp.Title, false); + else + new PdfOutline(outline, dest, "Page " + currentPageNumber.ToString(), false); + canvas.AddTemplate(page, 0, 0); // adds the page to the combined pdf + } while (currentPageNumber < numPages); + } + catch (Exception ex) + { + string tmp = string.Format("Error merging pdf {0}", mpp.PdfFileName); + _MyLog.Error(tmp, ex); + } } doc.Close(); return true;