在iTextFile PDF生成的文件中放置一行

时间:2016-12-11 18:23:50

标签: c# pdf c#-4.0 itext

我正在尝试使用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();

    }

我正在尝试将行放在页码的正下方,如下所示: enter image description here

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);

以防万一其他人需要它;

1 个答案:

答案 0 :(得分:1)

好的,所以这个伎俩就是这样做的(对于那些将来可能需要它的人):

   cb.MoveTo(50f, 80f);
   cb.LineTo(document.PageSize.Width-document.RightMargin, 80f);

这些是根据我在我的问题中显示的PDF文档边距计算的值,它们是:

50
50
120
40

你可以通过查看传递给LineTo和MoveTo方法的数字来判断它是如何完成的;

干杯