From 70f6cc2ec65b262224c5493b6ba9629fc62be84f Mon Sep 17 00:00:00 2001 From: Rich Date: Wed, 14 Aug 2019 13:53:17 +0000 Subject: [PATCH] B2019--115 Bottom Continue Message Location after AER Table and RNO Content excedes Page. --- PROMS/Volian.Print.Library/vlnParagraph.cs | 28 ++++++++++++++++++++-- 1 file changed, 26 insertions(+), 2 deletions(-) diff --git a/PROMS/Volian.Print.Library/vlnParagraph.cs b/PROMS/Volian.Print.Library/vlnParagraph.cs index 863125ef..c778556e 100644 --- a/PROMS/Volian.Print.Library/vlnParagraph.cs +++ b/PROMS/Volian.Print.Library/vlnParagraph.cs @@ -1815,7 +1815,9 @@ namespace Volian.Print.Library } } if (MyPageHelper.NotesToFootNotes != null && MyPageHelper.NotesToFootNotes.Count > 0) MyPageHelper.NotesToFootNotesYoffset = CalculateYLocation(yLocation, yTopMargin); - DoBottomContinueMsg(cb, yBottomMargin, yLocation, docstyle, doThreeContinues); + // B2019-115 Locate Bottom Continue Message below AER Table if necesssary + float bcm_yLocation = TableBottom == -1 ? yLocation: Math.Min(TableBottom,yLocation); + DoBottomContinueMsg(cb, yBottomMargin, bcm_yLocation, docstyle, doThreeContinues); MyPromsPrinter.NewPage(); if (MyItemInfo.IsStep && (MyItemInfo.ActiveSection != null && ((MyItemInfo.ActiveSection.MyDocStyle.StructureStyle.Style & E_DocStructStyle.DSS_PageListSpBckgrnd) == E_DocStructStyle.DSS_PageListSpBckgrnd))) // C2018-003 fixed use of getting the active section { @@ -2769,6 +2771,7 @@ namespace Volian.Print.Library private void DoBottomContinueMsg(PdfContentByte cb, float yBottomMargin, float yLocation, DocStyle docstyle, bool doThreeContinues) { + // Console.WriteLine("Page {0} - yLocation {1}", cb.PdfWriter.PageNumber, yLocation); string myMsg = docstyle.Continue.Bottom.Message; // a format flag exists that states to only put a BOTTOM message if it is a certain type (RNO) @@ -2959,8 +2962,17 @@ namespace Volian.Print.Library return true; } } + // B2019-115 Locate Bottom Continue Message below AER Table if necesssary + private float _TableBottom = -1; + public float TableBottom + { + get { return _TableBottom; } + set { _TableBottom = value; } + } private float OutputOtherPageSteps(PdfContentByte cb, float YTopMost, float yPageStart, float yTopMargin, float yBottomMargin) { + // B2019-115 Locate Bottom Continue Message below AER Table if necesssary - Initialize TableBottom to -1 + TableBottom = -1; float retval = YTopMost; // Find any items remaining in MyPageHelper.MyParagraphs that should be printed on this page. vlnParagraphs process = new vlnParagraphs(null); @@ -2971,9 +2983,13 @@ namespace Volian.Print.Library { if (vPara.MyItemInfo.IsTable && (vPara.YOffset <= YTopMost) && vPara.MyItemInfo.ActiveSection.ColumnMode > 0) { - _MyLog.WarnFormat("\r\n=-=-=> Table Print on First Page {0} {1} ColumnMode = {2}", vPara.MyItemInfo.ItemID, vPara.MyItemInfo.ShortPath, vPara.MyItemInfo.ActiveSection.ColumnMode); if (vPara.MyItemInfo.ActiveSection.ColumnMode > 0) + { + // B2019-115 Locate Bottom Continue Message below AER Table if necesssary + _MyLog.WarnFormat("\r\n=-=-=> Table Print on First Page {0} {1} ColumnMode = {2}", vPara.MyItemInfo.ItemID, vPara.MyItemInfo.ShortPath, vPara.MyItemInfo.ActiveSection.ColumnMode); process.Add(vPara); + // Console.WriteLine("Table YOffset {0} height {1} Bottom = {2} yPageStart = {3} Bottom {4}", vPara.YOffset, vPara.Height, vPara.YOffset + vPara.Height - yPageStart, yPageStart, this.YBottom); + } } else if (((vPara.YOffset + vPara.Height) < YTopMost)) { @@ -3014,6 +3030,14 @@ namespace Volian.Print.Library foreach (vlnParagraph vPara in process) { vPara.ParagraphToPdf(cb, yPageStart, yTopMargin, yBottomMargin); + // B2019-115 Locate Bottom Continue Message below AER Table if necesssary + if(vPara.MyItemInfo.IsTable) + { + if (TableBottom == -1) + TableBottom = (yPageStart-vPara.YOffset)-vPara.Height- SixLinesPerInch; + else + TableBottom = Math.Min(TableBottom, (yPageStart - vPara.YOffset) - vPara.Height - SixLinesPerInch); + } } return retval; }