我正在研究以前员工的错误代码 (我喜欢在其他人的代码上工作),他正在使用iTextSharp ASP framework 4.0创建一个pdf,c#
他正在使用:
if (yindex <= 100)
{
Cb.PdfDocument.NewPage();
Cb.SetCMYKColorStroke(100, 60, 0, 18);
yindex = 770;
}
Cb.BeginText();
Cb.SetFontAndSize(Font, FontSize);
Cb.ShowTextAligned(Alignment, text, xPos, yindex, rotation);
Cb.EndText();
基本上正在发生的事情是他打印一个时间列表,保持其总金额,一旦该部分完成,他试图将yindex设置回页面顶部并写一个标题总数。
如果有一个页面,这可以正常工作,但是当一个部分跨越多个页面时,将yindex设置到页面顶部会将文本设置为当前页面的顶部。如何跟踪标题应该在哪个页面上,然后在正确的页面上将yindex设置为正确的高度?
答案 0 :(得分:0)
我会丢弃将标题与其余数据一起写入的代码,并引入一个页面事件,在OnEndPage()
事件中添加标题。
要处理这样一个事实,即你只知道到达页面X时的总数,而你可能需要在页面X - 1,X - 2上的总数...我将使用PdfTemplate
(作为mkl建议)。
在MovieCountries1
等示例中对此进行了演示(请参阅http://tinyurl.com/itextsharpIIA2C04了解C#对应部分。)
使用页面事件的好处是您不需要跟踪页面,您可以将绘制标题的代码与业务逻辑的其余部分分开。有关更多示例,请参阅http://itextpdf.com/sandbox/events/。