diff --git a/PROMS/LBWordLibrary/LBObjectExtension.cs b/PROMS/LBWordLibrary/LBObjectExtension.cs index b9cb77e2..36419d13 100644 --- a/PROMS/LBWordLibrary/LBObjectExtension.cs +++ b/PROMS/LBWordLibrary/LBObjectExtension.cs @@ -110,7 +110,9 @@ namespace LBWordLibrary public string CreatePDF(string pdfFileName) { pdfFileName = AvailableFileName(pdfFileName); - if (Convert.ToSingle(Version) >= 12.0F && WordPDFExporterInstalled) + if (Convert.ToSingle(Version) > 12.0F) + return CreatePDF2007(pdfFileName); + if (Convert.ToSingle(Version) == 12.0F && WordPDFExporterInstalled) return CreatePDF2007(pdfFileName); else if (VolianPDFInstalled) return CreatePDF2003BG(pdfFileName); @@ -189,8 +191,9 @@ namespace LBWordLibrary public string CreatePDF2007(string pdfFileName) { pdfFileName = AvailableFileName(pdfFileName); - if (!WordPDFExporterInstalled) - throw new Exception("MS Word PDF Exporter is not installed"); + // Removed to support MSWord 2010 and beyond. + //if (!WordPDFExporterInstalled) + // throw new Exception("MS Word PDF Exporter is not installed"); try { ActiveDocument.ExportAsFixedFormat(pdfFileName, LBWdExportFormat.wdExportFormatPDF); diff --git a/PROMS/VEPROMS.CSLA.Library/Extension/DocumentExt.cs b/PROMS/VEPROMS.CSLA.Library/Extension/DocumentExt.cs index 2ffea256..391043b1 100644 --- a/PROMS/VEPROMS.CSLA.Library/Extension/DocumentExt.cs +++ b/PROMS/VEPROMS.CSLA.Library/Extension/DocumentExt.cs @@ -778,7 +778,7 @@ namespace VEPROMS.CSLA.Library //_MyLog.WarnFormat("PNG Name = {0}, size = {1}", fi.Name, fi.Length); filecount++; RectangleF plotRect = CreatePlot(pngFile, xyplot, 600F, FormForPlotGraphics); - + float xAdjust = (float)-sect.MyDocStyle.Layout.LeftMargin; float yAdjust = selxy.Font.Size; LBShape shape = myDoc.Shapes.AddPicture(pngFile, x + xAdjust + plotRect.X, yAdjust + y - yTop + plotRect.Y, selxy.Range); @@ -790,7 +790,7 @@ namespace VEPROMS.CSLA.Library } LBSelection sel = MyApp.Selection; sel.WholeStory(); - if(statusChange != null) statusChange(VolianStatusType.Initialize, sel.End, "Refreshing ROs"); + if (statusChange != null) statusChange(VolianStatusType.Initialize, sel.End, "Refreshing ROs"); sel = hasRos ? FindRO() : null; int roCount = 0; // force Print of MS Word Attachment to Final without revisions and comments @@ -920,7 +920,7 @@ namespace VEPROMS.CSLA.Library sel.Range.Font.Color = (LBWdColor)WordColor(OverrideColor == System.Drawing.Color.Transparent ? System.Drawing.Color.Black : OverrideColor); sect.MSWordPageCount = myDoc.Length; fileName = CreatePDF(fileName, openPdf); - MyApp.ActiveDocument.Close(false); + CloseDocument(); if (CloseWordWhenDone) { CloseAppAfterWait(); @@ -929,6 +929,31 @@ namespace VEPROMS.CSLA.Library return fileName; } } + private static void CloseDocument() + { + int attempts = 0; + while (++attempts < 11) + { + if (TryToClose(attempts)) return; + WaitMS(1000); + } + } + private static bool TryToClose(int attempts) + { + try + { + throw(new Exception("Oops!"); + MyApp.ActiveDocument.Close(false); + return true; + } + catch (Exception ex) + { + _MyLog.WarnFormat("{0} - {1}, Attempt {2}", ex.GetType().Name, ex.Message, attempts); + if (attempts >= 10) + _MyLog.Error("Failed to close 10 times.", ex); + return false; + } + } private static string FindEmbeddedText(string p, ref string resXyPlot) { StringBuilder sb = new StringBuilder(); // contains embedded text diff --git a/PROMS/Volian.Controls.Library/DSOTabPanel.cs b/PROMS/Volian.Controls.Library/DSOTabPanel.cs index 5bba3efc..44b768fb 100644 --- a/PROMS/Volian.Controls.Library/DSOTabPanel.cs +++ b/PROMS/Volian.Controls.Library/DSOTabPanel.cs @@ -503,6 +503,7 @@ namespace Volian.Controls.Library catch (Exception ex) { if (_MyLog.IsErrorEnabled) _MyLog.Error("SaveDSO", ex); + MessageBox.Show(ex.Message, "Error Saving Document", MessageBoxButtons.OK, MessageBoxIcon.Error); result = false; } return result;