Added Page Count to Status
Fixed Hanging Indent logic for vlnParagraphs
This commit is contained in:
parent
cb355b71aa
commit
f7e805a745
@ -96,6 +96,10 @@ namespace Volian.Print.Library
|
||||
{
|
||||
OnStatusChanged(this, new PromsPrintStatusArgs(myStatus, type));
|
||||
}
|
||||
public void OnStatusChanged(string msg)
|
||||
{
|
||||
OnStatusChanged(this, new PromsPrintStatusArgs(msg, PromsPrinterStatusType.General));
|
||||
}
|
||||
private void OnStatusChanged(string myStatus, PromsPrinterStatusType type, int progress)
|
||||
{
|
||||
OnStatusChanged(this, new PromsPrintStatusArgs(myStatus, type, progress));
|
||||
@ -513,7 +517,7 @@ namespace Volian.Print.Library
|
||||
}
|
||||
if (!mySection.IsStepSection) _MyHelper.PageBookmarks.Add((ItemInfo)mySection, ((mySection.DisplayNumber ?? "") == "" ? "" : mySection.DisplayNumber + " - ") + mySection.DisplayText, null);
|
||||
_MyHelper.MySection = mySection;
|
||||
OnStatusChanged("After Set Svg", PromsPrinterStatusType.SetSVG);
|
||||
//OnStatusChanged("After Set Svg", PromsPrinterStatusType.SetSVG);
|
||||
}
|
||||
// if this format uses phonelists, see if this section has one. We need to know the number
|
||||
//of lines to adjust the pagelength for pagination and printing.
|
||||
@ -873,7 +877,7 @@ namespace Volian.Print.Library
|
||||
rtfText = GetRtfToC(mySection.MyContent.Text, tOfC, ovrFont);
|
||||
}
|
||||
else
|
||||
rtfText = GetRtfToC(mySection.MyContent.Text, tOfC);
|
||||
rtfText = GetRtfToC(mySection.MyContent.Text, tOfC);
|
||||
Paragraph myparagrapht = vlnPrintObject.RtfToParagraph(rtfText);
|
||||
width = secPagePos - adjSecTitlePos - 6;
|
||||
float savTitleWid = width;
|
||||
|
@ -182,6 +182,7 @@ namespace Volian.Print.Library
|
||||
//}
|
||||
public override void OnEndPage(PdfWriter writer, iTextSharp.text.Document document)
|
||||
{
|
||||
MyPromsPrinter.OnStatusChanged(string.Format("Page {0}", CurrentPageNumber+1));
|
||||
bool onBlankPage = OnBlankPage;
|
||||
if (OnBlankPage)
|
||||
{
|
||||
@ -210,7 +211,7 @@ namespace Volian.Print.Library
|
||||
if (!CreatingFoldoutPage)
|
||||
DrawRuler(writer.DirectContent);
|
||||
}
|
||||
if (MySection.MyDocStyle.StructureStyle.Style == null || (MySection.MyDocStyle.StructureStyle.Style & E_DocStructStyle.DontCountInTabOfCont) == 0)
|
||||
if (MySection.MyDocStyle.StructureStyle.Style==null || (MySection.MyDocStyle.StructureStyle.Style & E_DocStructStyle.DontCountInTabOfCont) == 0)
|
||||
CurrentTOCPageNumber++;
|
||||
if (MySection.ActiveFormat.PlantFormat.FormatData.SectData.PrintPhoneList)
|
||||
{
|
||||
|
@ -349,21 +349,33 @@ namespace Volian.Print.Library
|
||||
// Notes:
|
||||
// A hard return will reset the chkW (indent width) back to zero.
|
||||
// We jump out of the processing loop after the first indent token is found and ignor any other ones
|
||||
IRtfDocument rtfDoc2 = RtfInterpreterTool.BuildDoc(rtf.Replace("\x05", @"\f1 \u9999? \f0 "));
|
||||
Rtf2iTextSharp rtf2IText2 = new Rtf2iTextSharp(rtfDoc2);
|
||||
iTextSharp.text.Paragraph para2 = rtf2IText2.Convert();
|
||||
float chkW = 0;
|
||||
foreach (Chunk chk in para2.Chunks)
|
||||
{
|
||||
if (chk.Content[0] == 9999) break;
|
||||
if (chk.Content.Contains("\n")) chkW = 0; //hard return - reset chkW (indent start)
|
||||
chkW += chk.GetWidthPoint();
|
||||
}
|
||||
float chkW = CalculateHangingIndent(rtf);
|
||||
para.IndentationLeft = chkW;
|
||||
para.FirstLineIndent = -chkW;
|
||||
}
|
||||
return para;
|
||||
}
|
||||
public static float CalculateHangingIndent(string rtf)
|
||||
{
|
||||
float chkW=0;
|
||||
IRtfDocument rtfDoc2 = RtfInterpreterTool.BuildDoc(rtf.Replace("\x05", @"\f1 \u9999? \f0 "));
|
||||
Rtf2iTextSharp rtf2IText2 = new Rtf2iTextSharp(rtfDoc2);
|
||||
iTextSharp.text.Paragraph para2 = rtf2IText2.Convert();
|
||||
foreach (Chunk chk in para2.Chunks)
|
||||
{
|
||||
if (chk.Content[0] == 9999) break;
|
||||
if (chk.Content.Contains("\u270f"))
|
||||
{
|
||||
int i = chk.Content.IndexOf('\u270F');
|
||||
int n = chk.Content.Length;
|
||||
chkW += chk.GetWidthPoint() * i / (n - i);
|
||||
break;
|
||||
}
|
||||
if (chk.Content.Contains("\n")) chkW = 0; //hard return - reset chkW (indent start)
|
||||
chkW += chk.GetWidthPoint();
|
||||
}
|
||||
return chkW;
|
||||
}
|
||||
public abstract float ToPdf(PdfContentByte cb, float yPageStart, ref float yTopMargin, ref float yBottomMargin);
|
||||
protected float CalculateYOffset(float yPageStart, float yTopMargin)
|
||||
{
|
||||
|
Loading…
x
Reference in New Issue
Block a user