Note/Caution/Warning x-offset & width adjustments; Continue message location for ‘Purpose, Entry Conditions, Precautions’
BGE: Don’t add bullet to top continue message with tab (it prints as funny character) BGE: Support for BottomSectionContinue flag in their ‘Purpose, Entry Conditions, Precautions’ sections.
This commit is contained in:
parent
34dbe75fca
commit
b78eb92448
@ -515,6 +515,7 @@ namespace VEPROMS.CSLA.Library
|
|||||||
{
|
{
|
||||||
string pTab = parTab == null ? "" : parTab;
|
string pTab = parTab == null ? "" : parTab;
|
||||||
string thisTab = itemInfo.MyTab.CleanText.Trim();
|
string thisTab = itemInfo.MyTab.CleanText.Trim();
|
||||||
|
if (thisTab != null && thisTab != "" && !char.IsLetterOrDigit(thisTab[0])) return pTab;
|
||||||
if (itemInfo.FormatStepData.NumberWithLevel) pTab = itemInfo.MyHLS.MyTab.CleanText.Trim();
|
if (itemInfo.FormatStepData.NumberWithLevel) pTab = itemInfo.MyHLS.MyTab.CleanText.Trim();
|
||||||
// if the parent tab ends with a alphanumeric and this tab is alphanumeric, add a '.' to separate them
|
// if the parent tab ends with a alphanumeric and this tab is alphanumeric, add a '.' to separate them
|
||||||
bool ms = pTab != "" && char.IsLetterOrDigit(pTab.TrimEnd()[pTab.Length - 1]); // parent tab ends with alphanumeric
|
bool ms = pTab != "" && char.IsLetterOrDigit(pTab.TrimEnd()[pTab.Length - 1]); // parent tab ends with alphanumeric
|
||||||
|
@ -857,6 +857,7 @@ namespace Volian.Print.Library
|
|||||||
int paginate = Paginate(yLocation, yTopMargin, yBottomMargin);
|
int paginate = Paginate(yLocation, yTopMargin, yBottomMargin);
|
||||||
bool firstHighLevelStep = MyItemInfo.IsHigh && (MyItemInfo.MyPrevious == null);
|
bool firstHighLevelStep = MyItemInfo.IsHigh && (MyItemInfo.MyPrevious == null);
|
||||||
bool doSectionTitleContinued = false; // will add " Continued" to the section title if format flag is set
|
bool doSectionTitleContinued = false; // will add " Continued" to the section title if format flag is set
|
||||||
|
DocStyle docstyle = null;
|
||||||
switch (paginate)
|
switch (paginate)
|
||||||
{
|
{
|
||||||
case 0: // No page break
|
case 0: // No page break
|
||||||
@ -871,6 +872,9 @@ namespace Volian.Print.Library
|
|||||||
break;
|
break;
|
||||||
case 1: // Break on High Level Step
|
case 1: // Break on High Level Step
|
||||||
OutputOtherPageSteps(cb, YTopMost, yPageStart, yTopMargin, yBottomMargin);
|
OutputOtherPageSteps(cb, YTopMost, yPageStart, yTopMargin, yBottomMargin);
|
||||||
|
docstyle = MyItemInfo.MyDocStyle;
|
||||||
|
bool doSectionContinue = ((docstyle.StructureStyle.Style & E_DocStructStyle.BottomSectionContinue) == E_DocStructStyle.BottomSectionContinue);
|
||||||
|
if (doSectionContinue) DoBottomContinueMsg(cb, yBottomMargin, yLocation, docstyle);
|
||||||
cb.PdfDocument.NewPage();
|
cb.PdfDocument.NewPage();
|
||||||
//_MyLog.InfoFormat("NewPage 10 {0}", cb.PdfWriter.CurrentPageNumber);
|
//_MyLog.InfoFormat("NewPage 10 {0}", cb.PdfWriter.CurrentPageNumber);
|
||||||
if (MyItemInfo.IsSection && MyParent != null && MyParent.MyItemInfo.IsSection && (MyItemInfo as SectionInfo).IsSeparatePagination())
|
if (MyItemInfo.IsSection && MyParent != null && MyParent.MyItemInfo.IsSection && (MyItemInfo as SectionInfo).IsSeparatePagination())
|
||||||
@ -907,6 +911,7 @@ namespace Volian.Print.Library
|
|||||||
yPageStart = yTopMargin + YTopMost;
|
yPageStart = yTopMargin + YTopMost;
|
||||||
DoCheckOffHeader(cb, MyItemInfo, yLocation, yTopMargin, yPageStart);
|
DoCheckOffHeader(cb, MyItemInfo, yLocation, yTopMargin, yPageStart);
|
||||||
|
|
||||||
|
if (doSectionContinue) DoTopContinueMsg(cb, ref yPageStart, yTopMargin, docstyle);
|
||||||
// If "ContinueSectionHeader" (format flag) is true then print the section title with "(Continued)" appended to it
|
// If "ContinueSectionHeader" (format flag) is true then print the section title with "(Continued)" appended to it
|
||||||
if (!MyItemInfo.IsSection && MyItemInfo.ActiveFormat.PlantFormat.FormatData.SectData.StepSectionData.ContinueSectionHeader)
|
if (!MyItemInfo.IsSection && MyItemInfo.ActiveFormat.PlantFormat.FormatData.SectData.StepSectionData.ContinueSectionHeader)
|
||||||
{
|
{
|
||||||
@ -917,7 +922,251 @@ namespace Volian.Print.Library
|
|||||||
break;
|
break;
|
||||||
case 2: // Break within a Step
|
case 2: // Break within a Step
|
||||||
OutputOtherPageSteps(cb, YTopMost, yPageStart, yTopMargin, yBottomMargin);
|
OutputOtherPageSteps(cb, YTopMost, yPageStart, yTopMargin, yBottomMargin);
|
||||||
DocStyle docstyle = MyItemInfo.MyDocStyle;
|
docstyle = MyItemInfo.MyDocStyle;
|
||||||
|
DoBottomContinueMsg(cb, yBottomMargin, yLocation, docstyle);
|
||||||
|
cb.PdfDocument.NewPage();
|
||||||
|
//_MyLog.InfoFormat("NewPage 11 {0}", cb.PdfWriter.CurrentPageNumber);
|
||||||
|
ResetDocStyleAndValues(ref yTopMargin, ref yBottomMargin);
|
||||||
|
DebugText.WriteLine("Paginate2");
|
||||||
|
if (MyItemInfo.MyHLS.FoldoutIndex() > -1)
|
||||||
|
PromsPrinter.DoFoldoutPage(cb, "Break within Step", MyPageHelper.TextLayer, MyPageHelper, MyItemInfo.MyHLS.FoldoutIndex(), false); // temporary foldout
|
||||||
|
else if (PromsPrinter.MyFoldoutReader.Count > 0 && MyPageHelper.MyPromsPrinter.InsertBlankPages)
|
||||||
|
{
|
||||||
|
MyPageHelper.OnBlankPage = true;
|
||||||
|
cb.PdfDocument.Add(new iTextSharp.text.Table(1));
|
||||||
|
cb.PdfDocument.NewPage();
|
||||||
|
_MyLog.InfoFormat("NewPage Break within step blank {0}", cb.PdfWriter.CurrentPageNumber);
|
||||||
|
}
|
||||||
|
|
||||||
|
// if there is a 'container vlnbox' around the HLS, flag that the drawn box must also break:
|
||||||
|
if (MyHighLevelParagraph != null && MyHighLevelParagraph.PartsContainer != null && MyHighLevelParagraph.PartsContainer.Count > 0 &&
|
||||||
|
!((MyHighLevelParagraph.MyItemInfo.MyDocStyle.StructureStyle.Style & E_DocStructStyle.DoubleBoxHLS) == E_DocStructStyle.DoubleBoxHLS))
|
||||||
|
{
|
||||||
|
foreach (vlnPrintObject vpo in MyHighLevelParagraph.PartsContainer)
|
||||||
|
{
|
||||||
|
vlnBox vb = vpo as vlnBox;
|
||||||
|
if (vb != null)
|
||||||
|
{
|
||||||
|
vb.ContainsPageBreak = true;
|
||||||
|
PartsContainer.Add(vb);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// If there is a box, adjust the yTopMost to include it.
|
||||||
|
float yTopMost = YTopMost;
|
||||||
|
//if (YVeryTop < yTopMost) Console.WriteLine("{0},{1},{2}", MyItemInfo.DBSequence, yTopMost, YVeryTop);
|
||||||
|
yTopMost = Math.Min(yTopMost, YVeryTop);
|
||||||
|
yPageStart = yTopMargin + yTopMost;// -2 * SixLinesPerInch;
|
||||||
|
DoCheckOffHeader(cb, MyItemInfo, yLocation, yTopMargin, yPageStart);
|
||||||
|
if (EmptyTopMostPart) yPageStart += SixLinesPerInch;
|
||||||
|
DoTopContinueMsg(cb, ref yPageStart, yTopMargin, docstyle);
|
||||||
|
|
||||||
|
// If "ContinueSectionHeader" (format flag) is true then print the section title with "(Continued)" appended to it
|
||||||
|
if (MyItemInfo.ActiveFormat.PlantFormat.FormatData.SectData.StepSectionData.ContinueSectionHeader)
|
||||||
|
{
|
||||||
|
SectionConfig sch = MyItemInfo.ActiveSection.MyConfig as SectionConfig;
|
||||||
|
doSectionTitleContinued = (sch == null || sch.Section_PrintHdr == "Y");
|
||||||
|
}
|
||||||
|
MyPageHelper.YMultiplier = 1;
|
||||||
|
|
||||||
|
// Now check if this is a template type step & if so, add the HLS's prefix/suffix to it.
|
||||||
|
if (MyItemInfo.MyHLS != null && MyItemInfo.MyHLS.FormatStepData.UseSmartTemplate)
|
||||||
|
{
|
||||||
|
vlnParagraph smartPara = new vlnParagraph(MyParent.MyParent, cb, MyItemInfo.MyHLS, MyParent.XOffset, 0, 0, 0, MyParent.MyItemInfo.ActiveFormat, null, " (Continued)", 0);
|
||||||
|
float mytmpfloat = smartPara.ParagraphToPdf(cb, smartPara.Height, yTopMargin, yBottomMargin); // .ToPdf(cb, 0, yTopMargin, yBottomMargin);
|
||||||
|
yPageStart -= smartPara.Height;
|
||||||
|
}
|
||||||
|
if (MyItemInfo.IsRNOPart && MyItemInfo.FormatStepData.DoubleSpace && MyItemInfo.FormatStepData.SpaceDouble) yPageStart += SixLinesPerInch;
|
||||||
|
break;
|
||||||
|
case 3: // Break on High Level Step (SevenLinesPerInch)
|
||||||
|
if (!firstHighLevelStep)
|
||||||
|
{
|
||||||
|
OutputOtherPageSteps(cb, YTopMost, yPageStart, yTopMargin, yBottomMargin);
|
||||||
|
cb.PdfDocument.NewPage(); // HLS (7 lpi) breakif (MyItemInfo.IsSection)
|
||||||
|
//_MyLog.InfoFormat("NewPage 12 {0}", cb.PdfWriter.CurrentPageNumber);
|
||||||
|
ResetDocStyleAndValues(ref yTopMargin, ref yBottomMargin);
|
||||||
|
DebugText.WriteLine("Paginate3");
|
||||||
|
if (MyItemInfo.IsSection)
|
||||||
|
{
|
||||||
|
SectionInfo si = MyItemInfo as SectionInfo;
|
||||||
|
MyPageHelper.PageBookmarks.Add(MyItemInfo, ((si.DisplayNumber ?? "") == "" ? "" : si.DisplayNumber + " - ") + si.DisplayText, null);
|
||||||
|
}
|
||||||
|
if (MyItemInfo.FoldoutIndex() > -1)
|
||||||
|
PromsPrinter.DoFoldoutPage(cb, "HLS (7 lpi) break", MyPageHelper.TextLayer, MyPageHelper, MyItemInfo.FoldoutIndex(), false);
|
||||||
|
else if (PromsPrinter.MyFoldoutReader.Count > 0 && MyPageHelper.MyPromsPrinter.InsertBlankPages)
|
||||||
|
{
|
||||||
|
// insert a blank page if this step section had a foldout associated and the checkbox
|
||||||
|
// on the print dialog, to add blank pages, is checked
|
||||||
|
MyPageHelper.OnBlankPage = true;
|
||||||
|
cb.PdfDocument.Add(new iTextSharp.text.Table(1));
|
||||||
|
cb.PdfDocument.NewPage();
|
||||||
|
//_MyLog.InfoFormat("NewPage 12 lpi blank {0}", cb.PdfWriter.CurrentPageNumber);
|
||||||
|
}
|
||||||
|
|
||||||
|
// If "ContinueSectionHeader" (format flag) is true then print the section title with "(Continued)" appended to it
|
||||||
|
if (!MyItemInfo.IsSection && MyItemInfo.ActiveFormat.PlantFormat.FormatData.SectData.StepSectionData.ContinueSectionHeader)
|
||||||
|
{
|
||||||
|
SectionConfig sch = MyItemInfo.ActiveSection.MyConfig as SectionConfig;
|
||||||
|
doSectionTitleContinued = (sch == null || sch.Section_PrintHdr == "Y");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
// if printing the section title, we already have the y location (note that only do this for the
|
||||||
|
// first step in the section.
|
||||||
|
if (MyItemInfo.MyPrevious == null && MyItemInfo.MyParent != null && MyItemInfo.MyParent.IsStepSection &&
|
||||||
|
ShowSectionTitles
|
||||||
|
&& !MyItemInfo.MyDocStyle.CancelSectTitle
|
||||||
|
&& !MyItemInfo.MyDocStyle.SpecialStepsFoldout)
|
||||||
|
yPageStart = yPageStart;
|
||||||
|
else
|
||||||
|
yPageStart = yTopMargin + YTopMost;
|
||||||
|
MyPageHelper.YMultiplier = _SevenLinesPerInch / SixLinesPerInch;
|
||||||
|
DoCheckOffHeader(cb, MyItemInfo, yLocation, yTopMargin, yPageStart);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
// If "doSectionTitleContinued" is true then print the section title with "(Continued)" appended to it
|
||||||
|
// format must have ContinueSectinHeader format flag set to true
|
||||||
|
if (doSectionTitleContinued)
|
||||||
|
{
|
||||||
|
vlnParagraph sectContPara = new vlnParagraph(MyParent.MyParent, cb, MyItemInfo.ActiveSection, MyParent.XOffset, 0, 0, 0, MyParent.MyItemInfo.ActiveFormat, null, " (Continued)", 0);
|
||||||
|
float mytmpfloat = sectContPara.ParagraphToPdf(cb, yTopMargin, yTopMargin, yBottomMargin);
|
||||||
|
yPageStart -= sectContPara.Height * 2;
|
||||||
|
}
|
||||||
|
yPageStart = ChildrenAbove.ToPdf(cb, yPageStart, ref yTopMargin, ref yBottomMargin);
|
||||||
|
yPageStart = ChildrenLeft.ToPdf(cb, yPageStart, ref yTopMargin, ref yBottomMargin);
|
||||||
|
|
||||||
|
// Handle the PageBreakOnStep flag for a HLS. This will put out the page break right before
|
||||||
|
// a HLS. One example of this use is for backgrounds (CALBCK).
|
||||||
|
if (MyPageHelper.ParaBreaks != null && MyPageHelper.ParaBreaks.Count > 0 &&
|
||||||
|
MyPageHelper.ParaBreaks[0] == this)
|
||||||
|
{
|
||||||
|
OutputOtherPageSteps(cb, YTopMost, yPageStart, yTopMargin, yBottomMargin);
|
||||||
|
MyPageHelper.BottomMessage = null;
|
||||||
|
MyPageHelper.TopMessage = null;
|
||||||
|
cb.PdfDocument.NewPage();
|
||||||
|
MyPageHelper.ParaBreaks.RemoveAt(0);
|
||||||
|
yPageStart = yTopMargin + YTop;
|
||||||
|
}
|
||||||
|
yPageStart = ParagraphToPdf(cb, yPageStart, yTopMargin, yBottomMargin);
|
||||||
|
// If the yPageStart changes by more than a small amount (pagination) in the RNO (right column), then update
|
||||||
|
// yPageStart for the AER (left column).
|
||||||
|
float yPageStartRNO = ChildrenRight.ToPdf(cb, yPageStart, ref yTopMargin, ref yBottomMargin);
|
||||||
|
if (yPageStartRNO - yPageStart > 24) // 24 is two lines
|
||||||
|
yPageStart = yPageStartRNO;
|
||||||
|
yPageStart = ChildrenBelow.ToPdf(cb, yPageStart, ref yTopMargin, ref yBottomMargin);
|
||||||
|
|
||||||
|
if (MyItemInfo.IsHigh && MyItemInfo.GetNextItem() == null) // last hls, add the 'end' message, if there is one
|
||||||
|
{
|
||||||
|
docstyle = MyItemInfo.MyDocStyle;
|
||||||
|
// if the EndForSingle format flag is set to false, then we do not print an End message if the section
|
||||||
|
// is a single column section.
|
||||||
|
//bool _skipEndMessage = MyPageHelper.MySection.SectionConfig.Section_ColumnMode == SectionConfig.SectionColumnMode.One && !MyItemInfo.ActiveFormat.MyStepSectionLayoutData.EndForSingle;
|
||||||
|
SectionInfo si = MyItemInfo.MyActiveSection as SectionInfo;
|
||||||
|
bool _skipEndMessage = si.SectionConfig.Section_ColumnMode == SectionConfig.SectionColumnMode.One && !MyItemInfo.ActiveFormat.MyStepSectionLayoutData.EndForSingle;
|
||||||
|
string myMsg = (docstyle.End == null) ? null : docstyle.End.FixedMessage;
|
||||||
|
if (myMsg != null && !_skipEndMessage)
|
||||||
|
{
|
||||||
|
// If the flag is 0 or 1, just put the end message out right below this vlnParagraph:
|
||||||
|
float msg_yLocation = CalculateYLocation(yPageStart - YBottomMost, yTopMargin);
|
||||||
|
//if (MyPageHelper.YMultiplier < 1)
|
||||||
|
// msg_yLocation += 4;// Robinson - if the page is compressed, we need this adjustment.
|
||||||
|
|
||||||
|
// the following is for IP3 - it was commented out so that an update could be put on
|
||||||
|
// before this was tested.
|
||||||
|
// if end message has {par}, remove these but add a line for each.
|
||||||
|
//int parindx = myMsg.IndexOf("{par}");
|
||||||
|
//bool foundpar = false;
|
||||||
|
//while (parindx > -1)
|
||||||
|
//{
|
||||||
|
// foundpar = true;
|
||||||
|
// msg_yLocation += SixLinesPerInch;
|
||||||
|
// parindx = myMsg.IndexOf("{par}", parindx + 1);
|
||||||
|
//}
|
||||||
|
//if (foundpar) myMsg = myMsg.Replace("{par}", "");
|
||||||
|
// use the 'flag' to position the message.
|
||||||
|
if (docstyle.End.Flag > 2) // >2 position at an absolute location defined by docstyle.End.Flag.
|
||||||
|
{
|
||||||
|
msg_yLocation = yTopMargin - (float)(docstyle.End.Flag * SixLinesPerInch);
|
||||||
|
}
|
||||||
|
if (docstyle.End.Flag < 0) // Adjust this many lines down the page.
|
||||||
|
{
|
||||||
|
float adjMsgY = (float)(-docstyle.End.Flag * SixLinesPerInch);
|
||||||
|
if (msg_yLocation - adjMsgY > docstyle.Layout.FooterLength) msg_yLocation = msg_yLocation - adjMsgY;
|
||||||
|
}
|
||||||
|
if (myMsg.Contains("{Section Number}")) myMsg = myMsg.Replace("{Section Number}", MyItemInfo.ActiveSection.DisplayNumber);
|
||||||
|
//jcb code
|
||||||
|
//if (myMsg.Contains("%-8s"))
|
||||||
|
// myMsg = myMsg.Replace("%-8s", MyItemInfo.MyProcedure.DisplayNumber.PadRight(8));
|
||||||
|
if (myMsg.Contains("%-12s"))
|
||||||
|
myMsg = myMsg.Replace("%-12s", MyItemInfo.MyProcedure.DisplayNumber.PadRight(12));
|
||||||
|
float xpos = 0;
|
||||||
|
if ((docstyle.End.Margin ?? 0) != 0)
|
||||||
|
{
|
||||||
|
xpos = (float)docstyle.Layout.LeftMargin + (float)docstyle.End.Margin;
|
||||||
|
MyPageHelper.BottomMessage = new vlnText(cb, this, myMsg, myMsg, xpos, msg_yLocation, docstyle.End.Font);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{ // Center the bottom message
|
||||||
|
float wtpm = (float)docstyle.Layout.PageWidth - (float)docstyle.Layout.LeftMargin;
|
||||||
|
xpos = XOffsetBox + (float)docstyle.Layout.LeftMargin + (wtpm - (myMsg.Length * MyItemInfo.FormatStepData.Font.CharsToTwips)) / 2;
|
||||||
|
xpos = Math.Max(xpos, XOffsetBox + (float)docstyle.Layout.LeftMargin);
|
||||||
|
MyPageHelper.BottomMessage = new vlnText(cb, this, myMsg, myMsg, xpos, msg_yLocation, docstyle.End.Font);
|
||||||
|
MyPageHelper.MyGaps.Add(new Gap(msg_yLocation, msg_yLocation - MyPageHelper.BottomMessage.Height));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (yLocalypagestart != yPageStart) DebugText.WriteLine("ToPdf-yPagestartDiff:{0},{1},{2},{3}", MyPageHelper.MyPdfContentByte.PdfWriter.CurrentPageNumber, MyItemInfo.ItemID, yLocalypagestart, yPageStart);
|
||||||
|
return yPageStart;
|
||||||
|
}
|
||||||
|
|
||||||
|
private void DoTopContinueMsg(PdfContentByte cb, ref float yPageStart, float yTopMargin, DocStyle docstyle)
|
||||||
|
{
|
||||||
|
string myMsg = docstyle.Continue.Top.Message;
|
||||||
|
MyPageHelper.TopMessageR = null;
|
||||||
|
if (myMsg != null && myMsg != "")
|
||||||
|
{
|
||||||
|
yPageStart -= 2 * SixLinesPerInch;// Allow two lines for top continue message
|
||||||
|
if (myMsg.IndexOf(@"%sR") > -1)
|
||||||
|
{
|
||||||
|
if (MyItemInfo.ItemID == 461 || MyItemInfo.ItemID == 446) Console.WriteLine("Here");
|
||||||
|
ItemInfo myAer = MyItemInfo.IsHigh ? MyItemInfo : MyItemInfo.MyParent;
|
||||||
|
if (MyItemInfo.IsInRNO)
|
||||||
|
{
|
||||||
|
if (MyItemInfo.IsNote || MyItemInfo.IsCaution)
|
||||||
|
myMsg = myMsg.Replace(@"%sR", MyItemInfo.MyParent.MyParent.CombinedTab);
|
||||||
|
else
|
||||||
|
myMsg = myMsg.Replace(@"%sR", MyItemInfo.MyParent.CombinedTab);
|
||||||
|
float xor = MyTopRNO.MyTab.XOffset;
|
||||||
|
MyPageHelper.TopMessageR = new vlnText(cb, this, myMsg, myMsg, xor, yTopMargin + 0.1F, docstyle.Continue.Top.Font);
|
||||||
|
// get aer message, go up parent until find aer and use its combined tab:
|
||||||
|
myAer = MyItemInfo;
|
||||||
|
while (myAer.IsInRNO) myAer = myAer.MyParent;
|
||||||
|
}
|
||||||
|
myMsg = docstyle.Continue.Top.Message.Replace(@"%sR", myAer.CombinedTab);
|
||||||
|
}
|
||||||
|
if (myMsg.IndexOf(@"%s") > -1)
|
||||||
|
{
|
||||||
|
if (MyItemInfo.MyParent.IsSection && (docstyle.StructureStyle.Style & E_DocStructStyle.BottomSectionContinue) == E_DocStructStyle.BottomSectionContinue)
|
||||||
|
myMsg = myMsg.Replace(@"%s", MyItemInfo.MyParent.MyTab.CleanText.Trim());
|
||||||
|
else
|
||||||
|
myMsg = myMsg.Replace(@"%s", MyItemInfo.MyParent.CombinedTab);
|
||||||
|
}
|
||||||
|
if (myMsg.IndexOf(@"%3d") > -1)
|
||||||
|
myMsg = myMsg.Replace(@"%3d", MyItemInfo.MyHLS.Ordinal.ToString());
|
||||||
|
if (myMsg.IndexOf(@"%d") > -1)
|
||||||
|
myMsg = myMsg.Replace(@"%d", MyItemInfo.MyHLS.MyTab.CleanTextNoSymbols.Trim(" .".ToCharArray()));
|
||||||
|
if (myMsg.IndexOf(@"%c") > -1)
|
||||||
|
myMsg = myMsg.Replace(@"%c", " ");
|
||||||
|
if (!PageBreakOnStep)
|
||||||
|
MyPageHelper.TopMessage = new vlnText(cb, this, myMsg, myMsg, docstyle.Layout.LeftMargin + XOffsetBox + docstyle.Continue.Top.Margin ?? 0, yTopMargin + 0.1F, docstyle.Continue.Top.Font);// MyItemInfo.ActiveFormat.PlantFormat.FormatData.Font);
|
||||||
|
else
|
||||||
|
MyPageHelper.TopMessage = null;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private void DoBottomContinueMsg(PdfContentByte cb, float yBottomMargin, float yLocation, DocStyle docstyle)
|
||||||
|
{
|
||||||
string myMsg = docstyle.Continue.Bottom.Message;
|
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)
|
// a format flag exists that states to only put a BOTTOM message if it is a certain type (RNO)
|
||||||
@ -1016,234 +1265,6 @@ namespace Volian.Print.Library
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (PageBreakOnStep) MyPageHelper.BottomMessage = null;
|
if (PageBreakOnStep) MyPageHelper.BottomMessage = null;
|
||||||
cb.PdfDocument.NewPage();
|
|
||||||
//_MyLog.InfoFormat("NewPage 11 {0}", cb.PdfWriter.CurrentPageNumber);
|
|
||||||
ResetDocStyleAndValues(ref yTopMargin, ref yBottomMargin);
|
|
||||||
DebugText.WriteLine("Paginate2");
|
|
||||||
if (MyItemInfo.MyHLS.FoldoutIndex() > -1)
|
|
||||||
PromsPrinter.DoFoldoutPage(cb, "Break within Step", MyPageHelper.TextLayer, MyPageHelper, MyItemInfo.MyHLS.FoldoutIndex(), false); // temporary foldout
|
|
||||||
else if (PromsPrinter.MyFoldoutReader.Count > 0 && MyPageHelper.MyPromsPrinter.InsertBlankPages)
|
|
||||||
{
|
|
||||||
MyPageHelper.OnBlankPage = true;
|
|
||||||
cb.PdfDocument.Add(new iTextSharp.text.Table(1));
|
|
||||||
cb.PdfDocument.NewPage();
|
|
||||||
_MyLog.InfoFormat("NewPage Break within step blank {0}", cb.PdfWriter.CurrentPageNumber);
|
|
||||||
}
|
|
||||||
|
|
||||||
// if there is a 'container vlnbox' around the HLS, flag that the drawn box must also break:
|
|
||||||
if (MyHighLevelParagraph != null && MyHighLevelParagraph.PartsContainer != null && MyHighLevelParagraph.PartsContainer.Count > 0 &&
|
|
||||||
!((MyHighLevelParagraph.MyItemInfo.MyDocStyle.StructureStyle.Style & E_DocStructStyle.DoubleBoxHLS) == E_DocStructStyle.DoubleBoxHLS))
|
|
||||||
{
|
|
||||||
foreach (vlnPrintObject vpo in MyHighLevelParagraph.PartsContainer)
|
|
||||||
{
|
|
||||||
vlnBox vb = vpo as vlnBox;
|
|
||||||
if (vb != null)
|
|
||||||
{
|
|
||||||
vb.ContainsPageBreak = true;
|
|
||||||
PartsContainer.Add(vb);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// If there is a box, adjust the yTopMost to include it.
|
|
||||||
float yTopMost = YTopMost;
|
|
||||||
//if (YVeryTop < yTopMost) Console.WriteLine("{0},{1},{2}", MyItemInfo.DBSequence, yTopMost, YVeryTop);
|
|
||||||
yTopMost = Math.Min(yTopMost, YVeryTop);
|
|
||||||
yPageStart = yTopMargin + yTopMost;// -2 * SixLinesPerInch;
|
|
||||||
DoCheckOffHeader(cb, MyItemInfo, yLocation, yTopMargin, yPageStart);
|
|
||||||
if (EmptyTopMostPart) yPageStart += SixLinesPerInch;
|
|
||||||
myMsg = docstyle.Continue.Top.Message;
|
|
||||||
MyPageHelper.TopMessageR = null;
|
|
||||||
if (myMsg != null && myMsg != "")
|
|
||||||
{
|
|
||||||
yPageStart -= 2 * SixLinesPerInch;// Allow two lines for top continue message
|
|
||||||
if (myMsg.IndexOf(@"%sR") > -1)
|
|
||||||
{
|
|
||||||
ItemInfo myAer = MyItemInfo.IsHigh?MyItemInfo:MyItemInfo.MyParent;
|
|
||||||
if (MyItemInfo.IsInRNO)
|
|
||||||
{
|
|
||||||
if (MyItemInfo.IsNote || MyItemInfo.IsCaution)
|
|
||||||
myMsg = myMsg.Replace(@"%sR", MyItemInfo.MyParent.MyParent.CombinedTab);
|
|
||||||
else
|
|
||||||
myMsg = myMsg.Replace(@"%sR", MyItemInfo.MyParent.CombinedTab);
|
|
||||||
float xor = MyTopRNO.MyTab.XOffset;
|
|
||||||
MyPageHelper.TopMessageR = new vlnText(cb, this, myMsg, myMsg, xor, yTopMargin + 0.1F, docstyle.Continue.Top.Font);
|
|
||||||
// get aer message, go up parent until find aer and use its combined tab:
|
|
||||||
myAer = MyItemInfo;
|
|
||||||
while (myAer.IsInRNO) myAer = myAer.MyParent;
|
|
||||||
}
|
|
||||||
myMsg = docstyle.Continue.Top.Message.Replace(@"%sR", myAer.CombinedTab);
|
|
||||||
}
|
|
||||||
if (myMsg.IndexOf(@"%s") > -1)
|
|
||||||
myMsg = myMsg.Replace(@"%s", MyItemInfo.MyParent.CombinedTab);
|
|
||||||
if (myMsg.IndexOf(@"%3d") > -1)
|
|
||||||
myMsg = myMsg.Replace(@"%3d", MyItemInfo.MyHLS.Ordinal.ToString());
|
|
||||||
if (myMsg.IndexOf(@"%d") > -1)
|
|
||||||
myMsg = myMsg.Replace(@"%d", MyItemInfo.MyHLS.MyTab.CleanTextNoSymbols.Trim(" .".ToCharArray()));
|
|
||||||
if (myMsg.IndexOf(@"%c") > -1)
|
|
||||||
myMsg = myMsg.Replace(@"%c", " ");
|
|
||||||
if (!PageBreakOnStep)
|
|
||||||
MyPageHelper.TopMessage = new vlnText(cb, this, myMsg, myMsg, docstyle.Layout.LeftMargin + XOffsetBox + docstyle.Continue.Top.Margin ?? 0, yTopMargin + 0.1F, docstyle.Continue.Top.Font);// MyItemInfo.ActiveFormat.PlantFormat.FormatData.Font);
|
|
||||||
else
|
|
||||||
MyPageHelper.TopMessage = null;
|
|
||||||
}
|
|
||||||
|
|
||||||
// If "ContinueSectionHeader" (format flag) is true then print the section title with "(Continued)" appended to it
|
|
||||||
if (MyItemInfo.ActiveFormat.PlantFormat.FormatData.SectData.StepSectionData.ContinueSectionHeader)
|
|
||||||
{
|
|
||||||
SectionConfig sch = MyItemInfo.ActiveSection.MyConfig as SectionConfig;
|
|
||||||
doSectionTitleContinued = (sch == null || sch.Section_PrintHdr == "Y");
|
|
||||||
}
|
|
||||||
MyPageHelper.YMultiplier = 1;
|
|
||||||
|
|
||||||
// Now check if this is a template type step & if so, add the HLS's prefix/suffix to it.
|
|
||||||
if (MyItemInfo.MyHLS != null && MyItemInfo.MyHLS.FormatStepData.UseSmartTemplate)
|
|
||||||
{
|
|
||||||
vlnParagraph smartPara = new vlnParagraph(MyParent.MyParent, cb, MyItemInfo.MyHLS, MyParent.XOffset, 0, 0, 0, MyParent.MyItemInfo.ActiveFormat, null, " (Continued)", 0);
|
|
||||||
float mytmpfloat = smartPara.ParagraphToPdf(cb, smartPara.Height, yTopMargin, yBottomMargin); // .ToPdf(cb, 0, yTopMargin, yBottomMargin);
|
|
||||||
yPageStart -= smartPara.Height;
|
|
||||||
}
|
|
||||||
if (MyItemInfo.IsRNOPart && MyItemInfo.FormatStepData.DoubleSpace && MyItemInfo.FormatStepData.SpaceDouble) yPageStart += SixLinesPerInch;
|
|
||||||
break;
|
|
||||||
case 3: // Break on High Level Step (SevenLinesPerInch)
|
|
||||||
if (!firstHighLevelStep)
|
|
||||||
{
|
|
||||||
OutputOtherPageSteps(cb, YTopMost, yPageStart, yTopMargin, yBottomMargin);
|
|
||||||
cb.PdfDocument.NewPage(); // HLS (7 lpi) breakif (MyItemInfo.IsSection)
|
|
||||||
//_MyLog.InfoFormat("NewPage 12 {0}", cb.PdfWriter.CurrentPageNumber);
|
|
||||||
ResetDocStyleAndValues(ref yTopMargin, ref yBottomMargin);
|
|
||||||
DebugText.WriteLine("Paginate3");
|
|
||||||
if (MyItemInfo.IsSection)
|
|
||||||
{
|
|
||||||
SectionInfo si = MyItemInfo as SectionInfo;
|
|
||||||
MyPageHelper.PageBookmarks.Add(MyItemInfo, ((si.DisplayNumber ?? "") == "" ? "" : si.DisplayNumber + " - ") + si.DisplayText, null);
|
|
||||||
}
|
|
||||||
if (MyItemInfo.FoldoutIndex() > -1)
|
|
||||||
PromsPrinter.DoFoldoutPage(cb, "HLS (7 lpi) break", MyPageHelper.TextLayer, MyPageHelper, MyItemInfo.FoldoutIndex(), false);
|
|
||||||
else if (PromsPrinter.MyFoldoutReader.Count > 0 && MyPageHelper.MyPromsPrinter.InsertBlankPages)
|
|
||||||
{
|
|
||||||
// insert a blank page if this step section had a foldout associated and the checkbox
|
|
||||||
// on the print dialog, to add blank pages, is checked
|
|
||||||
MyPageHelper.OnBlankPage = true;
|
|
||||||
cb.PdfDocument.Add(new iTextSharp.text.Table(1));
|
|
||||||
cb.PdfDocument.NewPage();
|
|
||||||
//_MyLog.InfoFormat("NewPage 12 lpi blank {0}", cb.PdfWriter.CurrentPageNumber);
|
|
||||||
}
|
|
||||||
|
|
||||||
// If "ContinueSectionHeader" (format flag) is true then print the section title with "(Continued)" appended to it
|
|
||||||
if (!MyItemInfo.IsSection && MyItemInfo.ActiveFormat.PlantFormat.FormatData.SectData.StepSectionData.ContinueSectionHeader)
|
|
||||||
{
|
|
||||||
SectionConfig sch = MyItemInfo.ActiveSection.MyConfig as SectionConfig;
|
|
||||||
doSectionTitleContinued = (sch == null || sch.Section_PrintHdr == "Y");
|
|
||||||
}
|
|
||||||
}
|
|
||||||
// if printing the section title, we already have the y location (note that only do this for the
|
|
||||||
// first step in the section.
|
|
||||||
if (MyItemInfo.MyPrevious == null && MyItemInfo.MyParent != null && MyItemInfo.MyParent.IsStepSection &&
|
|
||||||
ShowSectionTitles
|
|
||||||
&& !MyItemInfo.MyDocStyle.CancelSectTitle
|
|
||||||
&& !MyItemInfo.MyDocStyle.SpecialStepsFoldout)
|
|
||||||
yPageStart = yPageStart;
|
|
||||||
else
|
|
||||||
yPageStart = yTopMargin + YTopMost;
|
|
||||||
MyPageHelper.YMultiplier = _SevenLinesPerInch / SixLinesPerInch;
|
|
||||||
DoCheckOffHeader(cb, MyItemInfo, yLocation, yTopMargin, yPageStart);
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
|
|
||||||
// If "doSectionTitleContinued" is true then print the section title with "(Continued)" appended to it
|
|
||||||
// format must have ContinueSectinHeader format flag set to true
|
|
||||||
if (doSectionTitleContinued)
|
|
||||||
{
|
|
||||||
vlnParagraph sectContPara = new vlnParagraph(MyParent.MyParent, cb, MyItemInfo.ActiveSection, MyParent.XOffset, 0, 0, 0, MyParent.MyItemInfo.ActiveFormat, null, " (Continued)", 0);
|
|
||||||
float mytmpfloat = sectContPara.ParagraphToPdf(cb, yTopMargin, yTopMargin, yBottomMargin);
|
|
||||||
yPageStart -= sectContPara.Height * 2;
|
|
||||||
}
|
|
||||||
yPageStart = ChildrenAbove.ToPdf(cb, yPageStart, ref yTopMargin, ref yBottomMargin);
|
|
||||||
yPageStart = ChildrenLeft.ToPdf(cb, yPageStart, ref yTopMargin, ref yBottomMargin);
|
|
||||||
|
|
||||||
// Handle the PageBreakOnStep flag for a HLS. This will put out the page break right before
|
|
||||||
// a HLS. One example of this use is for backgrounds (CALBCK).
|
|
||||||
if (MyPageHelper.ParaBreaks != null && MyPageHelper.ParaBreaks.Count > 0 &&
|
|
||||||
MyPageHelper.ParaBreaks[0] == this)
|
|
||||||
{
|
|
||||||
OutputOtherPageSteps(cb, YTopMost, yPageStart, yTopMargin, yBottomMargin);
|
|
||||||
MyPageHelper.BottomMessage = null;
|
|
||||||
MyPageHelper.TopMessage = null;
|
|
||||||
cb.PdfDocument.NewPage();
|
|
||||||
MyPageHelper.ParaBreaks.RemoveAt(0);
|
|
||||||
yPageStart = yTopMargin + YTop;
|
|
||||||
}
|
|
||||||
yPageStart = ParagraphToPdf(cb, yPageStart, yTopMargin, yBottomMargin);
|
|
||||||
// If the yPageStart changes by more than a small amount (pagination) in the RNO (right column), then update
|
|
||||||
// yPageStart for the AER (left column).
|
|
||||||
float yPageStartRNO = ChildrenRight.ToPdf(cb, yPageStart, ref yTopMargin, ref yBottomMargin);
|
|
||||||
if (yPageStartRNO - yPageStart > 24) // 24 is two lines
|
|
||||||
yPageStart = yPageStartRNO;
|
|
||||||
yPageStart = ChildrenBelow.ToPdf(cb, yPageStart, ref yTopMargin, ref yBottomMargin);
|
|
||||||
|
|
||||||
if (MyItemInfo.IsHigh && MyItemInfo.GetNextItem() == null) // last hls, add the 'end' message, if there is one
|
|
||||||
{
|
|
||||||
DocStyle docstyle = MyItemInfo.MyDocStyle;
|
|
||||||
// if the EndForSingle format flag is set to false, then we do not print an End message if the section
|
|
||||||
// is a single column section.
|
|
||||||
//bool _skipEndMessage = MyPageHelper.MySection.SectionConfig.Section_ColumnMode == SectionConfig.SectionColumnMode.One && !MyItemInfo.ActiveFormat.MyStepSectionLayoutData.EndForSingle;
|
|
||||||
SectionInfo si = MyItemInfo.MyActiveSection as SectionInfo;
|
|
||||||
bool _skipEndMessage = si.SectionConfig.Section_ColumnMode == SectionConfig.SectionColumnMode.One && !MyItemInfo.ActiveFormat.MyStepSectionLayoutData.EndForSingle;
|
|
||||||
string myMsg = (docstyle.End == null) ? null : docstyle.End.FixedMessage;
|
|
||||||
if (myMsg != null && !_skipEndMessage)
|
|
||||||
{
|
|
||||||
// If the flag is 0 or 1, just put the end message out right below this vlnParagraph:
|
|
||||||
float msg_yLocation = CalculateYLocation(yPageStart - YBottomMost, yTopMargin);
|
|
||||||
//if (MyPageHelper.YMultiplier < 1)
|
|
||||||
// msg_yLocation += 4;// Robinson - if the page is compressed, we need this adjustment.
|
|
||||||
|
|
||||||
// the following is for IP3 - it was commented out so that an update could be put on
|
|
||||||
// before this was tested.
|
|
||||||
// if end message has {par}, remove these but add a line for each.
|
|
||||||
//int parindx = myMsg.IndexOf("{par}");
|
|
||||||
//bool foundpar = false;
|
|
||||||
//while (parindx > -1)
|
|
||||||
//{
|
|
||||||
// foundpar = true;
|
|
||||||
// msg_yLocation += SixLinesPerInch;
|
|
||||||
// parindx = myMsg.IndexOf("{par}", parindx + 1);
|
|
||||||
//}
|
|
||||||
//if (foundpar) myMsg = myMsg.Replace("{par}", "");
|
|
||||||
// use the 'flag' to position the message.
|
|
||||||
if (docstyle.End.Flag > 2) // >2 position at an absolute location defined by docstyle.End.Flag.
|
|
||||||
{
|
|
||||||
msg_yLocation = yTopMargin - (float)(docstyle.End.Flag * SixLinesPerInch);
|
|
||||||
}
|
|
||||||
if (docstyle.End.Flag < 0) // Adjust this many lines down the page.
|
|
||||||
{
|
|
||||||
float adjMsgY = (float)(-docstyle.End.Flag * SixLinesPerInch);
|
|
||||||
if (msg_yLocation - adjMsgY > docstyle.Layout.FooterLength) msg_yLocation = msg_yLocation - adjMsgY;
|
|
||||||
}
|
|
||||||
if (myMsg.Contains("{Section Number}")) myMsg = myMsg.Replace("{Section Number}", MyItemInfo.ActiveSection.DisplayNumber);
|
|
||||||
//jcb code
|
|
||||||
//if (myMsg.Contains("%-8s"))
|
|
||||||
// myMsg = myMsg.Replace("%-8s", MyItemInfo.MyProcedure.DisplayNumber.PadRight(8));
|
|
||||||
if (myMsg.Contains("%-12s"))
|
|
||||||
myMsg = myMsg.Replace("%-12s", MyItemInfo.MyProcedure.DisplayNumber.PadRight(12));
|
|
||||||
float xpos = 0;
|
|
||||||
if ((docstyle.End.Margin ?? 0) != 0)
|
|
||||||
{
|
|
||||||
xpos = (float)docstyle.Layout.LeftMargin + (float)docstyle.End.Margin;
|
|
||||||
MyPageHelper.BottomMessage = new vlnText(cb, this, myMsg, myMsg, xpos, msg_yLocation, docstyle.End.Font);
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{ // Center the bottom message
|
|
||||||
float wtpm = (float)docstyle.Layout.PageWidth - (float)docstyle.Layout.LeftMargin;
|
|
||||||
xpos = XOffsetBox + (float)docstyle.Layout.LeftMargin + (wtpm - (myMsg.Length * MyItemInfo.FormatStepData.Font.CharsToTwips)) / 2;
|
|
||||||
xpos = Math.Max(xpos, XOffsetBox + (float)docstyle.Layout.LeftMargin);
|
|
||||||
MyPageHelper.BottomMessage = new vlnText(cb, this, myMsg, myMsg, xpos, msg_yLocation, docstyle.End.Font);
|
|
||||||
MyPageHelper.MyGaps.Add(new Gap(msg_yLocation, msg_yLocation - MyPageHelper.BottomMessage.Height));
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
if (yLocalypagestart != yPageStart) DebugText.WriteLine("ToPdf-yPagestartDiff:{0},{1},{2},{3}", MyPageHelper.MyPdfContentByte.PdfWriter.CurrentPageNumber, MyItemInfo.ItemID, yLocalypagestart, yPageStart);
|
|
||||||
return yPageStart;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private void RefreshDocStyle()
|
private void RefreshDocStyle()
|
||||||
|
@ -15,6 +15,8 @@ namespace fmtxml
|
|||||||
fmtdata.SectData.SectionHeader.Level0Big = "True";
|
fmtdata.SectData.SectionHeader.Level0Big = "True";
|
||||||
fmtdata.SectData.StepSectionData.StpSectLayData.ColS = 30;
|
fmtdata.SectData.StepSectionData.StpSectLayData.ColS = 30;
|
||||||
fmtdata.SectData.StepSectionData.StpSectLayData.ColRTable = "0,192,126";
|
fmtdata.SectData.StepSectionData.StpSectLayData.ColRTable = "0,192,126";
|
||||||
|
fmtdata.SectData.StepSectionData.StpSectLayData.ColT = -18;
|
||||||
|
fmtdata.SectData.StepSectionData.StpSectLayData.WidT = 442;
|
||||||
fmtdata.SectData.StepSectionData.SequentialTabFormat[4].TabFormat = "{seq})";
|
fmtdata.SectData.StepSectionData.SequentialTabFormat[4].TabFormat = "{seq})";
|
||||||
fmtdata.SectData.StepSectionData.SequentialTabFormat[4].PrintTabFormat = "{seq})";
|
fmtdata.SectData.StepSectionData.SequentialTabFormat[4].PrintTabFormat = "{seq})";
|
||||||
fmtdata.TransData.UseSpecificTransitionModifier = "true";
|
fmtdata.TransData.UseSpecificTransitionModifier = "true";
|
||||||
@ -49,6 +51,7 @@ namespace fmtxml
|
|||||||
private void AddBGEEOPDOC(ref DocStyles dcstyles)
|
private void AddBGEEOPDOC(ref DocStyles dcstyles)
|
||||||
{
|
{
|
||||||
dcstyles.DcStyles[0].TopMargin = 96;
|
dcstyles.DcStyles[0].TopMargin = 96;
|
||||||
|
dcstyles.DcStyles[0].CBLoc = 6;
|
||||||
dcstyles.DcStyles[1].PageLength = 600;
|
dcstyles.DcStyles[1].PageLength = 600;
|
||||||
dcstyles.DcStyles[1].PageWidth = 552;
|
dcstyles.DcStyles[1].PageWidth = 552;
|
||||||
dcstyles.DcStyles[1].EndMargin = 206;
|
dcstyles.DcStyles[1].EndMargin = 206;
|
||||||
@ -67,6 +70,8 @@ namespace fmtxml
|
|||||||
|
|
||||||
// Attachment Step
|
// Attachment Step
|
||||||
dcstyles.DcStyles[4].FooterLen = 0;
|
dcstyles.DcStyles[4].FooterLen = 0;
|
||||||
|
dcstyles.DcStyles[4].PageWidth = 552;
|
||||||
|
|
||||||
|
|
||||||
// EOP Placekeeper
|
// EOP Placekeeper
|
||||||
dcstyles.DcStyles[12].TopMargin = 138;
|
dcstyles.DcStyles[12].TopMargin = 138;
|
||||||
|
Loading…
x
Reference in New Issue
Block a user