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 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 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
|
||||
|
@ -857,6 +857,7 @@ namespace Volian.Print.Library
|
||||
int paginate = Paginate(yLocation, yTopMargin, yBottomMargin);
|
||||
bool firstHighLevelStep = MyItemInfo.IsHigh && (MyItemInfo.MyPrevious == null);
|
||||
bool doSectionTitleContinued = false; // will add " Continued" to the section title if format flag is set
|
||||
DocStyle docstyle = null;
|
||||
switch (paginate)
|
||||
{
|
||||
case 0: // No page break
|
||||
@ -871,6 +872,9 @@ namespace Volian.Print.Library
|
||||
break;
|
||||
case 1: // Break on High Level Step
|
||||
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();
|
||||
//_MyLog.InfoFormat("NewPage 10 {0}", cb.PdfWriter.CurrentPageNumber);
|
||||
if (MyItemInfo.IsSection && MyParent != null && MyParent.MyItemInfo.IsSection && (MyItemInfo as SectionInfo).IsSeparatePagination())
|
||||
@ -907,6 +911,7 @@ namespace Volian.Print.Library
|
||||
yPageStart = yTopMargin + YTopMost;
|
||||
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 (!MyItemInfo.IsSection && MyItemInfo.ActiveFormat.PlantFormat.FormatData.SectData.StepSectionData.ContinueSectionHeader)
|
||||
{
|
||||
@ -917,7 +922,251 @@ namespace Volian.Print.Library
|
||||
break;
|
||||
case 2: // Break within a Step
|
||||
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;
|
||||
|
||||
// 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;
|
||||
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()
|
||||
|
@ -15,6 +15,8 @@ namespace fmtxml
|
||||
fmtdata.SectData.SectionHeader.Level0Big = "True";
|
||||
fmtdata.SectData.StepSectionData.StpSectLayData.ColS = 30;
|
||||
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].PrintTabFormat = "{seq})";
|
||||
fmtdata.TransData.UseSpecificTransitionModifier = "true";
|
||||
@ -49,6 +51,7 @@ namespace fmtxml
|
||||
private void AddBGEEOPDOC(ref DocStyles dcstyles)
|
||||
{
|
||||
dcstyles.DcStyles[0].TopMargin = 96;
|
||||
dcstyles.DcStyles[0].CBLoc = 6;
|
||||
dcstyles.DcStyles[1].PageLength = 600;
|
||||
dcstyles.DcStyles[1].PageWidth = 552;
|
||||
dcstyles.DcStyles[1].EndMargin = 206;
|
||||
@ -67,6 +70,8 @@ namespace fmtxml
|
||||
|
||||
// Attachment Step
|
||||
dcstyles.DcStyles[4].FooterLen = 0;
|
||||
dcstyles.DcStyles[4].PageWidth = 552;
|
||||
|
||||
|
||||
// EOP Placekeeper
|
||||
dcstyles.DcStyles[12].TopMargin = 138;
|
||||
|
Loading…
x
Reference in New Issue
Block a user