diff --git a/PROMS/Volian.Print.Library/VlnSvgPageHelper.cs b/PROMS/Volian.Print.Library/VlnSvgPageHelper.cs index 9eab80dc..4f6d853a 100644 --- a/PROMS/Volian.Print.Library/VlnSvgPageHelper.cs +++ b/PROMS/Volian.Print.Library/VlnSvgPageHelper.cs @@ -224,36 +224,49 @@ namespace Volian.Print.Library plist = plist.Replace("\r", ""); string[] lines = plist.Split("\n".ToCharArray()); DocStyle docstyle = MySection.MyDocStyle; - foreach (string cline in lines) + try { - if (cline != "") + foreach (string clinex in lines) { - // xoff handles the columns. The separator between phone items is a double space. A phone - // item may have a single space within it (this comes from 16bit implementation) - float xoff = (float)docstyle.Layout.LeftMargin; - int stLineindx = 0; - int endLineindx = cline.IndexOf(" "); - bool endOfLine = false; - while (!endOfLine) + string cline = clinex.TrimEnd(); + if (cline != "") { - string phone = cline.Substring(stLineindx, endLineindx - stLineindx); - float tmp = 0; - vlnText vt = new vlnText(pdfContentByte, null, phone, phone, xoff, lyoff, MySection.ActiveFormat.PlantFormat.FormatData.Font); - vt.ToPdf(pdfContentByte, 0, ref tmp, ref tmp); - xoff += 132; // columns in 16bit were a little more than 1 3/4 inches. - stLineindx = endLineindx; - if (stLineindx >= cline.Length) break; - while (cline[stLineindx] == ' ' && stLineindx < cline.Length) stLineindx++; - if (stLineindx >= cline.Length - 1) endOfLine = true; - else + // xoff handles the columns. The separator between phone items is a double space. A phone + // item may have a single space within it (this comes from 16bit implementation) + float xoff = (float)docstyle.Layout.LeftMargin; + int stLineindx = 0; + int endLineindx = cline.IndexOf(" "); + bool endOfLine = false; + while (!endOfLine) { - endLineindx = cline.IndexOf(" ", stLineindx); - if (endLineindx == -1) endLineindx = cline.Length; + if (endLineindx - stLineindx > 0) + { + string phone = cline.Substring(stLineindx, endLineindx - stLineindx); + float tmp = 0; + vlnText vt = new vlnText(pdfContentByte, null, phone, phone, xoff, lyoff, MySection.ActiveFormat.PlantFormat.FormatData.Font); + vt.ToPdf(pdfContentByte, 0, ref tmp, ref tmp); + xoff += 132; // columns in 16bit were a little more than 1 3/4 inches. + stLineindx = endLineindx; + if (stLineindx >= cline.Length) break; + while (cline[stLineindx] == ' ' && stLineindx < cline.Length) stLineindx++; + if (stLineindx >= cline.Length - 1) endOfLine = true; + else + { + endLineindx = cline.IndexOf(" ", stLineindx); + if (endLineindx == -1) endLineindx = cline.Length; + } + } + else + endOfLine = true; } + lyoff = lyoff - vlnPrintObject.SixLinesPerInch; } - lyoff = lyoff - vlnPrintObject.SixLinesPerInch; } } + catch (Exception ex) + { + _MyLog.Error("Error processing phone list.", ex); + } if (PageListLayer != null) pdfContentByte.EndLayer(); pdfContentByte.RestoreState(); }