在 A4 sheet iTextSharp 的中心画一条线

Draw a line in the center of an A4 sheet iTextSharp

我想在页面中间画一条线,但我的代码在 PDF 的页脚中生成了一条线

    public void GeneratePdf()
    {
        Document document = new Document(PageSize.A4, 0, 0, 50, 50);
        var output = new FileStream("doctest.pdf", FileMode.Create);
        var writer = PdfWriter.GetInstance(document, output);
        document.Open();

        document.NewPage();
        PdfContentByte contentByte = writer.DirectContent;
        contentByte.SetLineWidth(1);
        contentByte.MoveTo(0, 14);
        contentByte.LineTo(document.PageSize.Width, 0);
        contentByte.Stroke();

        document.Close();
        writer.Close();
    }

如何在页面中间画线?

这里有几点需要考虑:

  1. 如果你想画一条横跨页面的线,你需要在开始和结束时设置相同的高度;在这里,您在 14 中开始行并将其绘制到 0.
  2. iTextSharp 用户单位 衡量事物。一个用户单位对应一个点。一英寸有 72 个点,所以如果你想把你的线放在第 14 英寸,你应该指定 14 * 72
  3. 作者的位置是从下往上;这就是为什么将 14 设置为行首时将其绘制在底部的原因。

考虑到这一点:如果您想在页面中间画线,只需使用页面大小:

contentByte.MoveTo(0, document.PageSize.Height / 2);
contentByte.LineTo(document.PageSize.Width, document.PageSize.Height / 2);

如果你想在另一个位置绘制它,在真实页面中测量你想要绘制线条的位置(以英寸为单位),从页面的总大小中减去它并乘以 72。即如果你想在离顶部 5 英寸的地方画线,考虑到 A4 尺寸是 8.3 * 11.7:

contentByte.MoveTo(0, (11.7f - 5f) * 72f);
contentByte.LineTo(document.PageSize.Width, (11.7f - 5f) * 72f);