diff --git a/PROMS/VEPROMS/PrintMSWord/PromsPrinter.cs b/PROMS/VEPROMS/PrintMSWord/PromsPrinter.cs index 5be51013..764711e0 100644 --- a/PROMS/VEPROMS/PrintMSWord/PromsPrinter.cs +++ b/PROMS/VEPROMS/PrintMSWord/PromsPrinter.cs @@ -13,6 +13,7 @@ using LBWordLibrary; using System.Drawing; using System.Drawing.Imaging; using Volian.Controls.Library; +using Volian.Print.Library; namespace PrintMSWord { @@ -90,9 +91,9 @@ namespace PrintMSWord } public string Print(string pdfFolder, Proms2010Print myProms2010Print, string myMSWordFile,System.Windows.Forms.Form myForm) { - if(_MyItem is SectionInfo) - return Print(_MyItem as SectionInfo, pdfFolder, myProms2010Print,myForm); - else if (_MyItem is ProcedureInfo) + //if(_MyItem is SectionInfo) + // return Print(_MyItem as SectionInfo, pdfFolder, myProms2010Print,myForm); + if (_MyItem is ProcedureInfo) return Print(_MyItem as ProcedureInfo, pdfFolder, myProms2010Print,myForm); return ""; } @@ -107,78 +108,78 @@ namespace PrintMSWord } return MSWordFile; } - private string Print(SectionInfo mySection, string pdfFolder, Proms2010Print myProms2010Print, System.Windows.Forms.Form myForm) - { - // Create an output file name - string outputFileName = pdfFolder + "\\" + CreateFileName(mySection.MyProcedure.DisplayNumber, mySection.DisplayNumber, mySection.DisplayText); - //Console.WriteLine("Section {0}", outputFileName); - Proms2010Procedure proc = myProms2010Print.GetProcedure(mySection.MyProcedure); - Proms2010Section sect = proc == null ? null : proc.GetSection(mySection); - // Create an MSWord Pdf - // Setup a pdf Document for printing - PdfContentByte cb = OpenDoc(outputFileName); - // Create Layers - CreateLayers(cb); - // Setup pdfPageEventHelper for the particular Section - // Try to grab a 16-bit version of the output as a background - string procedureFileName = myProms2010Print.PROMS16_Folder + "\\" + CreateFileName(mySection.MyProcedure.DisplayNumber); - FileInfo VEPromsFile = new FileInfo(procedureFileName); - PdfReader reader16 = VEPromsFile.Exists ? new PdfReader(procedureFileName) : null; - // Loop through MSWord Pages - FormatInfo activeFormat = mySection.ActiveFormat; - DocStyle docStyle = GetDocStyle(activeFormat, (mySection.MyContent.Type ?? 10000)); - Svg mySvg = BuildSvg(mySection,activeFormat,docStyle); - cb.PdfWriter.PageEvent = new SvgPageHelper(mySvg,_PagelistLayer,_WatermarkLayer); - string myMSWordFile = BuildMSWordPDF(mySection,myForm); - PdfReader readerWord = myMSWordFile != null ? new PdfReader(myMSWordFile) : null; - for (int ii = 0; ii < sect.PageCount; ii++) - { - int pageNumber = 1 + ii + sect.StartingPage; - cb.PdfDocument.NewPage(); - PdfImportedPage bgPage = cb.PdfWriter.GetImportedPage(reader16, pageNumber); - AddImportedPageToLayer(cb.PdfWriter.DirectContentUnder, _BackgroundLayer, bgPage, 12, -9.7F); - if (readerWord != null) - { - PdfImportedPage fgPage = cb.PdfWriter.GetImportedPage(readerWord, ii + 1); - AddImportedPageToLayer(cb.PdfWriter.DirectContentUnder, _MSWordLayer, fgPage, 0, 0); - } - } - CloseDocument(cb, outputFileName); - // Return the fileName; - return outputFileName; - } - private int _PLPage = 0; - private int _PLOf = 0; - private List _MissingTokens = new List(); - private string ReplacePageListToken(Match match) - { - switch (match.Value) - { - case "{PAGE}": // Current Page Number - string retval = _PLPage.ToString(); - _PLPage++; // Increment Page Number - return retval; - case "{OF}": // Total Page Count for this section - return _PLOf.ToString(); - case "{REVDATE}": // Revision Date - return _RevDate; - case "{REV}": // Revision Number - return _Rev; - } - if (!_MissingTokens.Contains(match.Value)) - { - _MissingTokens.Add(match.Value); - Console.WriteLine("\t\t\t\tcase \"{0}\": // Unhandled Token\r\n\t\t\t\t\treturn \"\";", match.Value); - } - return ""; - } - //private Regex regexReplaceTokens = new Regex(@"{[^{}]}"); - private string mySvg_ProcessText(object sender, SvgProcessTextArgs args) - { - if (!args.MyText.Contains("{")) - return args.MyText; - return regexFindToken.Replace(args.MyText, new MatchEvaluator(ReplacePageListToken)); - } + //private string Print(SectionInfo mySection, string pdfFolder, Proms2010Print myProms2010Print, System.Windows.Forms.Form myForm) + //{ + // // Create an output file name + // string outputFileName = pdfFolder + "\\" + CreateFileName(mySection.MyProcedure.DisplayNumber, mySection.DisplayNumber, mySection.DisplayText); + // //Console.WriteLine("Section {0}", outputFileName); + // Proms2010Procedure proc = myProms2010Print.GetProcedure(mySection.MyProcedure); + // Proms2010Section sect = proc == null ? null : proc.GetSection(mySection); + // // Create an MSWord Pdf + // // Setup a pdf Document for printing + // PdfContentByte cb = OpenDoc(outputFileName); + // // Create Layers + // CreateLayers(cb); + // // Setup pdfPageEventHelper for the particular Section + // // Try to grab a 16-bit version of the output as a background + // string procedureFileName = myProms2010Print.PROMS16_Folder + "\\" + CreateFileName(mySection.MyProcedure.DisplayNumber); + // FileInfo VEPromsFile = new FileInfo(procedureFileName); + // PdfReader reader16 = VEPromsFile.Exists ? new PdfReader(procedureFileName) : null; + // // Loop through MSWord Pages + // FormatInfo activeFormat = mySection.ActiveFormat; + // DocStyle docStyle = GetDocStyle(activeFormat, (mySection.MyContent.Type ?? 10000)); + // Svg mySvg = BuildSvg(mySection,activeFormat,docStyle); + // cb.PdfWriter.PageEvent = new SvgPageHelper(mySvg,_PagelistLayer,_WatermarkLayer); + // string myMSWordFile = BuildMSWordPDF(mySection,myForm); + // PdfReader readerWord = myMSWordFile != null ? new PdfReader(myMSWordFile) : null; + // for (int ii = 0; ii < sect.PageCount; ii++) + // { + // int pageNumber = 1 + ii + sect.StartingPage; + // cb.PdfDocument.NewPage(); + // PdfImportedPage bgPage = cb.PdfWriter.GetImportedPage(reader16, pageNumber); + // AddImportedPageToLayer(cb.PdfWriter.DirectContentUnder, _BackgroundLayer, bgPage, 12, -9.7F); + // if (readerWord != null) + // { + // PdfImportedPage fgPage = cb.PdfWriter.GetImportedPage(readerWord, ii + 1); + // AddImportedPageToLayer(cb.PdfWriter.DirectContentUnder, _MSWordLayer, fgPage, 0, 0); + // } + // } + // CloseDocument(cb, outputFileName); + // // Return the fileName; + // return outputFileName; + //} + //private int _PLPage = 0; + //private int _PLOf = 0; + //private List _MissingTokens = new List(); + //private string ReplacePageListToken(Match match) + //{ + // switch (match.Value) + // { + // case "{PAGE}": // Current Page Number + // string retval = _PLPage.ToString(); + // _PLPage++; // Increment Page Number + // return retval; + // case "{OF}": // Total Page Count for this section + // return _PLOf.ToString(); + // case "{REVDATE}": // Revision Date + // return _RevDate; + // case "{REV}": // Revision Number + // return _Rev; + // } + // if (!_MissingTokens.Contains(match.Value)) + // { + // _MissingTokens.Add(match.Value); + // Console.WriteLine("\t\t\t\tcase \"{0}\": // Unhandled Token\r\n\t\t\t\t\treturn \"\";", match.Value); + // } + // return ""; + //} + ////private Regex regexReplaceTokens = new Regex(@"{[^{}]}"); + //private string mySvg_ProcessText(object sender, SvgProcessTextArgs args) + //{ + // if (!args.MyText.Contains("{")) + // return args.MyText; + // return regexFindToken.Replace(args.MyText, new MatchEvaluator(ReplacePageListToken)); + //} private static void AddImportedPageToLayer(PdfContentByte cb, PdfLayer layer, PdfImportedPage page, float xOff, float yOff) { cb.BeginLayer(layer); @@ -232,6 +233,7 @@ namespace PrintMSWord return Regex.Replace(name, "[ .,]", "_") + ".pdf"; } int _StepPageNumber = 0; + private VlnSvgPageHelper _MyHelper = null; private string Print(ProcedureInfo myProcedure, string pdfFolder, Proms2010Print myProms2010Print, System.Windows.Forms.Form myForm) { OnStatusChanged("Print " + myProcedure.DisplayNumber, PromsPrinterStatusType.Start); @@ -252,25 +254,27 @@ namespace PrintMSWord PdfReader reader16 = VEPromsFile.Exists ? new PdfReader(procedureFileName) : null; OnStatusChanged("OpenReader16", PromsPrinterStatusType.Open16); // Loop through MSWord Pages - SvgPageHelper myHelper = null; OnStatusChanged("Before NewPage", PromsPrinterStatusType.Before); cb.PdfDocument.NewPage(); OnStatusChanged("After NewPage", PromsPrinterStatusType.NewPage); foreach (SectionInfo mySection in myProcedure.Sections) { OnStatusChanged("Before BuildSvg", PromsPrinterStatusType.Before); - FormatInfo activeFormat = mySection.ActiveFormat; - DocStyle docStyle = GetDocStyle(activeFormat, (mySection.MyContent.Type ?? 10000)); - Svg mySvg = BuildSvg(mySection,activeFormat,docStyle); + //Svg mySvg = BuildSvg(mySection,activeFormat,docStyle); OnStatusChanged("After BuildSvg", PromsPrinterStatusType.BuildSVG); - if (myHelper == null) + if (_MyHelper == null) { - cb.PdfWriter.PageEvent = myHelper = new SvgPageHelper(mySvg, _PagelistLayer, _WatermarkLayer); + cb.PdfWriter.PageEvent = _MyHelper = new VlnSvgPageHelper(mySection); + _MyHelper.WatermarkLayer = _WatermarkLayer; + _MyHelper.PageListLayer = _PagelistLayer; + _MyHelper.Rev = _Rev; + _MyHelper.RevDate = _RevDate; + _MyHelper.Watermark = _Watermark; OnStatusChanged("After Set PageEvent", PromsPrinterStatusType.SetPageEvent); } else { - myHelper.MySvg = mySvg; + _MyHelper.MySection = mySection; OnStatusChanged("After Set Svg", PromsPrinterStatusType.SetSVG); } string myMSWordFile = BuildMSWordPDF(mySection, myForm); @@ -279,7 +283,7 @@ namespace PrintMSWord OnStatusChanged("Open MSWord", PromsPrinterStatusType.OpenMSWord); Proms2010Section sect = proc == null ? null : proc.GetSection(mySection); OnStatusChanged("Get Section", PromsPrinterStatusType.GetSection); - SetupPageNumbering(docStyle, sect.PageCount); + SetupPageNumbering(mySection.MyDocStyle, sect.PageCount); for (int ii = 0; ii < sect.PageCount; ii++) { int pageNumber = 1 + ii + sect.StartingPage; @@ -306,16 +310,25 @@ namespace PrintMSWord cb.PdfDocument.NewPage(); OnStatusChanged("After NewPage", PromsPrinterStatusType.NewPage); } - SavePageNumbering(docStyle); + SavePageNumbering(mySection.MyDocStyle); } CloseDocument(cb, outputFileName); // Return the fileName; return outputFileName; } - + private int PLPage + { + get { return _MyHelper.CurrentPageNumber; } + set { if (_MyHelper != null) _MyHelper.CurrentPageNumber = value; } + } + private int PLOf + { + get { return _MyHelper.CurrentPageOf; } + set { if(_MyHelper != null) _MyHelper.CurrentPageOf = value; } + } private void SetupPageCount(ProcedureInfo myProcedure, Proms2010Procedure proc) { - _PLPage = 1; + PLPage = 1; _PageNumber = new Dictionary(); _PageNumber.Add("Procedure Steps", 1); _PageCount = new Dictionary(); @@ -330,7 +343,7 @@ namespace PrintMSWord else { FormatInfo activeFormat = mySection.ActiveFormat; - DocStyle docStyle = GetDocStyle(activeFormat, (mySection.MyContent.Type ?? 10000)); + DocStyle docStyle = mySection.MyDocStyle;// GetDocStyle(activeFormat, (mySection.MyContent.Type ?? 10000)); int pageCount = Convert.ToInt32(Math.Ceiling(mySection.MyContent.MyEntry.MyDocument.DocumentConfig.Printing_Length)); switch (docStyle.IsStepSection ? E_NumberingSequence.WithSteps : docStyle.NumberingSequence ?? E_NumberingSequence.WithSteps) { @@ -360,7 +373,7 @@ namespace PrintMSWord switch (docStyle.IsStepSection ? E_NumberingSequence.WithSteps : docStyle.NumberingSequence ?? E_NumberingSequence.WithSteps) { case E_NumberingSequence.WithSteps: - _PageNumber["Procedure Steps"] = _PLPage; + _PageNumber["Procedure Steps"] = PLPage; break; case E_NumberingSequence.NoPageNum: case E_NumberingSequence.WithinEachDocStyle: @@ -384,8 +397,8 @@ namespace PrintMSWord switch (docStyle.IsStepSection ? E_NumberingSequence.WithSteps : docStyle.NumberingSequence ?? E_NumberingSequence.WithSteps) { case E_NumberingSequence.WithSteps: - _PLPage = _PageNumber["Procedure Steps"]; - _PLOf = _PageCount["Procedure Steps"]; + PLPage = _PageNumber["Procedure Steps"]; + PLOf = _PageCount["Procedure Steps"]; break; case E_NumberingSequence.NoPageNum: case E_NumberingSequence.WithinEachDocStyle: @@ -398,199 +411,199 @@ namespace PrintMSWord case E_NumberingSequence.Like6_ButDoesntNeedSubsection: case E_NumberingSequence.Like6_ButDoesntNeedSubsection1: default: - _PLOf = pageCount; - _PLPage = 1; + PLOf = pageCount; + PLPage = 1; break; } - Console.WriteLine("'{0}','{1}',{2}",docStyle.Name, docStyle.NumberingSequence,_PLPage); - } - private Svg BuildSvg(SectionInfo section,FormatInfo activeFormat,DocStyle docStyle) - { - Svg mySvg = null; - mySvg = SvgSerializer.StringDeserialize(BuildMyText(activeFormat)); - mySvg.ViewBox.Height = 1100; - mySvg.ViewBox.Width = 850; - mySvg.Height = new SvgMeasurement(11, E_MeasurementUnits.IN); - mySvg.Width = new SvgMeasurement(8.5F, E_MeasurementUnits.IN); - mySvg.LeftMargin = (float)docStyle.Layout.LeftMargin; - mySvg.TopMargin = 9.6F; - PageStyle pageStyle = docStyle.pagestyle; - AddPageListItems(mySvg, pageStyle, section); - //DocStyle docStyle = GetDocStyle(activeFormat, (section.MyContent.Type ?? 10000)); - mySvg.ProcessText += new SvgProcessTextEvent(mySvg_ProcessText); - return mySvg; + Console.WriteLine("'{0}','{1}',{2}",docStyle.Name, docStyle.NumberingSequence,PLPage); } + //private Svg BuildSvg(SectionInfo section,FormatInfo activeFormat,DocStyle docStyle) + //{ + // Svg mySvg = null; + // mySvg = SvgSerializer.StringDeserialize(BuildMyText(activeFormat)); + // mySvg.ViewBox.Height = 1100; + // mySvg.ViewBox.Width = 850; + // mySvg.Height = new SvgMeasurement(11, E_MeasurementUnits.IN); + // mySvg.Width = new SvgMeasurement(8.5F, E_MeasurementUnits.IN); + // mySvg.LeftMargin = (float)docStyle.Layout.LeftMargin; + // mySvg.TopMargin = 9.6F; + // PageStyle pageStyle = docStyle.pagestyle; + // AddPageListItems(mySvg, pageStyle, section); + // //DocStyle docStyle = GetDocStyle(activeFormat, (section.MyContent.Type ?? 10000)); + // mySvg.ProcessText += new SvgProcessTextEvent(mySvg_ProcessText); + // return mySvg; + //} private static Regex regexTextOnly = new Regex(@"^[^{}]*$"); - private static Regex regexJustTokens = new Regex(@"^{([^{}\?]*}{)*[^{}\?]*}$"); + //private static Regex regexJustTokens = new Regex(@"^{([^{}\?]*}{)*[^{}\?]*}$"); private static Regex regexConditional = new Regex(@"^{.*\?.*}$"); - private static Regex regexFindToken = new Regex("{[^{}]*}"); - private void AddPageListItems(Svg mySvg, PageStyle pageStyle, SectionInfo section) - { - SvgGroup svgGroup = new SvgGroup(); - foreach (PageItem pageItem in pageStyle.PageItems) - { - if (regexJustTokens.IsMatch(pageItem.Token)) - { - MatchCollection matches = regexFindToken.Matches(pageItem.Token); - foreach (Match match in matches) - { - string token = match.Value; - switch (match.Value) - { - case "{HEADER1}": - case "{HEADER2}": - case "{HEADER3}": - case "{HEADER4}": - case "{HEADER5}": - case "{BOX1}": - case "{BOX2}": - case "{BOX3}": - case "{BOX4}": - case "{BOX5}": - case "{BOX6}": - case "{BOX7}": - case "{BOX8}": - svgGroup.Add(PageItemToSvgUse(pageItem, FirstAndLast(token))); - break; - case "{DRAFTPAGE}": - case "{REFERENCEPAGE}": - case "{MASTERPAGE}": - case "{SAMPLEPAGE}": - mySvg.SetValidWaterMark(token, _Watermark); - break; - case "{PROCTITLE}": - SplitTitle(svgGroup, pageItem, section.MyProcedure.DisplayText, (int)section.ActiveFormat.PlantFormat.FormatData.ProcData.TitleLength); - break; - case "{EOPNUM}": - svgGroup.Add(PageItemToSvgText(pageItem, section.MyProcedure.DisplayNumber)); - break; - case "{SECTIONLEVELTITLE}": - SplitTitle(svgGroup, pageItem, section.DisplayText, section.ActiveFormat.PlantFormat.FormatData.SectData.SectionTitleLength); - svgGroup.Add(PageItemToSvgText(pageItem, section.DisplayText)); - break; - case "{SECTIONLEVELNUMBER}": - svgGroup.Add(PageItemToSvgText(pageItem, section.DisplayNumber)); - break; - default: - Console.WriteLine("Token not processed {0}", token); - break; - } - } - } - else - { - svgGroup.Add(PageItemToSvgText(pageItem,pageItem.Token)); - } - } - mySvg.Add(svgGroup); - } + //private static Regex regexFindToken = new Regex("{[^{}]*}"); + //private void AddPageListItems(Svg mySvg, PageStyle pageStyle, SectionInfo section) + //{ + // SvgGroup svgGroup = new SvgGroup(); + // foreach (PageItem pageItem in pageStyle.PageItems) + // { + // if (regexJustTokens.IsMatch(pageItem.Token)) + // { + // MatchCollection matches = regexFindToken.Matches(pageItem.Token); + // foreach (Match match in matches) + // { + // string token = match.Value; + // switch (match.Value) + // { + // case "{HEADER1}": + // case "{HEADER2}": + // case "{HEADER3}": + // case "{HEADER4}": + // case "{HEADER5}": + // case "{BOX1}": + // case "{BOX2}": + // case "{BOX3}": + // case "{BOX4}": + // case "{BOX5}": + // case "{BOX6}": + // case "{BOX7}": + // case "{BOX8}": + // svgGroup.Add(PageItemToSvgUse(pageItem, FirstAndLast(token))); + // break; + // case "{DRAFTPAGE}": + // case "{REFERENCEPAGE}": + // case "{MASTERPAGE}": + // case "{SAMPLEPAGE}": + // mySvg.SetValidWaterMark(token, _Watermark); + // break; + // case "{PROCTITLE}": + // SplitTitle(svgGroup, pageItem, section.MyProcedure.DisplayText, (int)section.ActiveFormat.PlantFormat.FormatData.ProcData.TitleLength); + // break; + // case "{EOPNUM}": + // svgGroup.Add(PageItemToSvgText(pageItem, section.MyProcedure.DisplayNumber)); + // break; + // case "{SECTIONLEVELTITLE}": + // SplitTitle(svgGroup, pageItem, section.DisplayText, section.ActiveFormat.PlantFormat.FormatData.SectData.SectionTitleLength); + // svgGroup.Add(PageItemToSvgText(pageItem, section.DisplayText)); + // break; + // case "{SECTIONLEVELNUMBER}": + // svgGroup.Add(PageItemToSvgText(pageItem, section.DisplayNumber)); + // break; + // default: + // Console.WriteLine("Token not processed {0}", token); + // break; + // } + // } + // } + // else + // { + // svgGroup.Add(PageItemToSvgText(pageItem,pageItem.Token)); + // } + // } + // mySvg.Add(svgGroup); + //} - private string FirstAndLast(string token) - { - // strip the curly braces and return the first and last character - // For example Header1 becomes H1 and Box2 becomes B2 - return token.Substring(1, 1) + token.Substring(token.Length - 2, 1); - } - private void SplitTitle(SvgGroup svgGroup, PageItem pageItem, string title, int? len) - { - // TODO: need to calculate len in either points or inches and use the font from the pageItem to determine the number of characters - if(len == null || title.Length < len) - { - svgGroup.Add(PageItemToSvgText(pageItem, title)); - return; - } - // Otherwise determine how many line to split the text into - List titleLines = SplitText(title,(int)len); - // Move up 6 Points per line to find the starting point - float yOffset = -6 * (titleLines.Count-1); - foreach (string line in titleLines) - { - svgGroup.Add(PageItemToSvgText(pageItem, line, yOffset)); - yOffset += 12; - } - } + //private string FirstAndLast(string token) + //{ + // // strip the curly braces and return the first and last character + // // For example Header1 becomes H1 and Box2 becomes B2 + // return token.Substring(1, 1) + token.Substring(token.Length - 2, 1); + //} + //private void SplitTitle(SvgGroup svgGroup, PageItem pageItem, string title, int? len) + //{ + // // TODO: need to calculate len in either points or inches and use the font from the pageItem to determine the number of characters + // if(len == null || title.Length < len) + // { + // svgGroup.Add(PageItemToSvgText(pageItem, title)); + // return; + // } + // // Otherwise determine how many line to split the text into + // List titleLines = SplitText(title,(int)len); + // // Move up 6 Points per line to find the starting point + // float yOffset = -6 * (titleLines.Count-1); + // foreach (string line in titleLines) + // { + // svgGroup.Add(PageItemToSvgText(pageItem, line, yOffset)); + // yOffset += 12; + // } + //} - private List SplitText(string title, int len) - { - List retval = new List(); - int strlen = title.Length; - int start = 0; - while ((strlen - start) > len) - { - int width = FindWidth(title, start, len); - retval.Add(title.Substring(start, width)); - start += width; - while (title[start] == ' ') start++; - } - if (strlen - start > 0) - retval.Add(title.Substring(start, strlen - start)); - return retval; - } + //private List SplitText(string title, int len) + //{ + // List retval = new List(); + // int strlen = title.Length; + // int start = 0; + // while ((strlen - start) > len) + // { + // int width = FindWidth(title, start, len); + // retval.Add(title.Substring(start, width)); + // start += width; + // while (title[start] == ' ') start++; + // } + // if (strlen - start > 0) + // retval.Add(title.Substring(start, strlen - start)); + // return retval; + //} - private int FindWidth(string title, int start, int len) - { - for (int ii = start + len; ii > start; ii--) - { - if (title[ii] == ' ') - { - while (title[ii] == ' ') ii--; - if (ii > start) - return 2 + ii - start; - return len; - } - } - return len; - } + //private int FindWidth(string title, int start, int len) + //{ + // for (int ii = start + len; ii > start; ii--) + // { + // if (title[ii] == ' ') + // { + // while (title[ii] == ' ') ii--; + // if (ii > start) + // return 2 + ii - start; + // return len; + // } + // } + // return len; + //} - private string BuildMyText(FormatInfo activeFormat) - { - string sGenMac = activeFormat.GenMac; - if (!sGenMac.Contains("xmlns")) - sGenMac = sGenMac.Replace(".StringSerialize(mySvg); - XmlDocument xDocPrintout = new XmlDocument(); - xDocPrintout.LoadXml(str); - XmlNode xn = xDocPrintout.DocumentElement.ChildNodes[0]; - xn.AppendChild(xDocPrintout.ImportNode(xDocGenMac.DocumentElement, true)); - return xDocPrintout.OuterXml; - } - private DocStyle GetDocStyle(FormatInfo formatInfo, int type) - { - int i = type - 10000; - return formatInfo.PlantFormat.DocStyles.DocStyleList[i]; - } - private SvgPart PageItemToSvgUse(PageItem pageItem, string templateName) - { - SvgUse svgUse = new SvgUse(); - svgUse.UseID = templateName; - svgUse.X = new SvgMeasurement((float)(pageItem.Col ?? 0), E_MeasurementUnits.PT); - svgUse.Y = new SvgMeasurement((float)(pageItem.Row ?? 0), E_MeasurementUnits.PT); - return svgUse; - } - private static SvgText PageItemToSvgText(PageItem pageItem, string text) - { - SvgText svgText = new SvgText(); - svgText.Text = text; - E_Justify justify = pageItem.Justify ?? E_Justify.PSLeft; - if ((justify & E_Justify.PSLeft) == E_Justify.PSLeft) - svgText.Justify = SvgJustify.Left; - else if ((justify & E_Justify.PSRight) == E_Justify.PSRight) - svgText.Justify = SvgJustify.Right; - else - svgText.Justify = SvgJustify.Center; - svgText.Font = pageItem.Font.WindowsFont; - svgText.X = new SvgMeasurement((float)(pageItem.Col ?? 0), E_MeasurementUnits.PT); - svgText.Y = new SvgMeasurement((float)(pageItem.Row ?? 0), E_MeasurementUnits.PT); - if (svgText.Font.Underline && svgText.Text.EndsWith(" ")) svgText.Text = svgText.Text.Substring(0, svgText.Text.Length - 1) + "\xA0";// replace last space with a hardspace - return svgText; - } + //private string BuildMyText(FormatInfo activeFormat) + //{ + // string sGenMac = activeFormat.GenMac; + // if (!sGenMac.Contains("xmlns")) + // sGenMac = sGenMac.Replace(".StringSerialize(mySvg); + // XmlDocument xDocPrintout = new XmlDocument(); + // xDocPrintout.LoadXml(str); + // XmlNode xn = xDocPrintout.DocumentElement.ChildNodes[0]; + // xn.AppendChild(xDocPrintout.ImportNode(xDocGenMac.DocumentElement, true)); + // return xDocPrintout.OuterXml; + //} + //private DocStyle GetDocStyle(FormatInfo formatInfo, int type) + //{ + // int i = type - 10000; + // return formatInfo.PlantFormat.DocStyles.DocStyleList[i]; + //} + //private SvgPart PageItemToSvgUse(PageItem pageItem, string templateName) + //{ + // SvgUse svgUse = new SvgUse(); + // svgUse.UseID = templateName; + // svgUse.X = new SvgMeasurement((float)(pageItem.Col ?? 0), E_MeasurementUnits.PT); + // svgUse.Y = new SvgMeasurement((float)(pageItem.Row ?? 0), E_MeasurementUnits.PT); + // return svgUse; + //} + //private static SvgText PageItemToSvgText(PageItem pageItem, string text) + //{ + // SvgText svgText = new SvgText(); + // svgText.Text = text; + // E_Justify justify = pageItem.Justify ?? E_Justify.PSLeft; + // if ((justify & E_Justify.PSLeft) == E_Justify.PSLeft) + // svgText.Justify = SvgJustify.Left; + // else if ((justify & E_Justify.PSRight) == E_Justify.PSRight) + // svgText.Justify = SvgJustify.Right; + // else + // svgText.Justify = SvgJustify.Center; + // svgText.Font = pageItem.Font.WindowsFont; + // svgText.X = new SvgMeasurement((float)(pageItem.Col ?? 0), E_MeasurementUnits.PT); + // svgText.Y = new SvgMeasurement((float)(pageItem.Row ?? 0), E_MeasurementUnits.PT); + // if (svgText.Font.Underline && svgText.Text.EndsWith(" ")) svgText.Text = svgText.Text.Substring(0, svgText.Text.Length - 1) + "\xA0";// replace last space with a hardspace + // return svgText; + //} private SvgPart PageItemToSvgText(PageItem pageItem, string text, float yOffset) { SvgText svgText = new SvgText(); @@ -623,6 +636,9 @@ namespace PrintMSWord } public static string ToPDFReplaceROs(SectionInfo sect, bool openPdf, System.Windows.Forms.Form myForm ) { + string fileName = GetFileName(sect); + if (System.IO.File.Exists(@"C:\Temp\" + fileName + ".pdf")) + return @"C:\Temp\" + fileName + ".pdf"; int docStyleIndex = ((int)sect.MyContent.Type) % 10000; DocStyle myDocStyle = sect.ActiveFormat.PlantFormat.DocStyles.DocStyleList[docStyleIndex]; PageStyle myPageStyle = myDocStyle.pagestyle; @@ -743,7 +759,7 @@ namespace PrintMSWord sel.ParagraphFormat.LineSpacingRule = LBWdLineSpacing.wdLineSpaceExactly; sel.ParagraphFormat.LineSpacing = 12; //Console.WriteLine("{0},{1}", sel.ParagraphFormat.LineSpacing, sel.ParagraphFormat.LineSpacingRule); - string fileName = sect.DisplayNumber == "" ? sect.DisplayText : sect.DisplayNumber; + //string fileName = GetFileName(sect); //MyApp.Visible = true; //MessageBox.Show("Ready to make PDF"); //MyApp.Visible = false; @@ -755,6 +771,12 @@ namespace PrintMSWord return fileName; } } + + private static string GetFileName(SectionInfo sect) + { + string fileName = "Doc " + sect.MyContent.MyEntry.DocID.ToString(); // +" " + (sect.DisplayNumber == "" ? sect.DisplayText : sect.DisplayNumber); + return fileName; + } private static RectangleF CreatePlot(string pngFile, string xyPlot, float resolution, System.Windows.Forms.Form myForm) { RectangleF retval = new RectangleF(0, 0, 0, 0);