我正在尝试使用iTextSharp在生成的PDF文档的页脚中放置一个行分隔符,如下所示:
public override void OnEndPage(PdfWriter writer, Document document)
{
base.OnEndPage(writer, document);
int pageN = writer.PageNumber;
String text = "Page " + pageN + " / ";
float len = bf.GetWidthPoint(text, 8);
Rectangle pageSize = document.PageSize;
cb.SetRGBColorFill(0, 0, 0);
cb.BeginText();
cb.SetFontAndSize(bf, 8);
cb.SetTextMatrix(pageSize.GetRight(90), pageSize.GetBottom(90));
cb.ShowText(text);
cb.EndText();
cb.AddTemplate(template, pageSize.GetRight(90) + len, pageSize.GetBottom(90));
// line separator is here
cb.SetLineWidth(2.0f); // Make a bit thicker than 1.0 default
cb.MoveTo(20, document.Top - 40f);
cb.LineTo(400, document.Top - 40f);
cb.Stroke();
}
Document doc = new Document(iTextSharp.text.PageSize.A4,50,50,120,40);
值是:
50 - margin left
50 - margin right
120 - margin top
40 - margin bottom
MoveTo和LineTo方法接受如下参数:
MoveTo(x axis, y axis);
LineTo(x axis, y axis);
有人可以帮我计算一下吗? :)
编辑:刚刚做到了
cb.MoveTo(50f, 80f);
cb.LineTo(document.PageSize.Width-document.RightMargin, 80f);
以防万一其他人需要它;
答案 0 :(得分:1)
好的,所以这个伎俩就是这样做的(对于那些将来可能需要它的人):
cb.MoveTo(50f, 80f);
cb.LineTo(document.PageSize.Width-document.RightMargin, 80f);
这些是根据我在我的问题中显示的PDF文档边距计算的值,它们是:
50
50
120
40
你可以通过查看传递给LineTo和MoveTo方法的数字来判断它是如何完成的;
干杯