在A4纸iTextSharp的中心画一条线

时间:2016-07-01 16:43:43

标签: c# itext

我想在页面中间画一条线,但我的代码在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 个答案:

答案 0 :(得分:2)

这里需要考虑的一些事项:

  1. 如果你想画一条穿过页面的线,你需要在开头和结尾都加上相同的高度;在这里,您将在14中开始行并将其绘制到0
  2. iTextSharp衡量用户单元中的内容。用户单元对应于一个点。一英寸有72个点,所以如果你想把你的线放在第14英寸,你应该指定14 * 72
  3. 作家的位置是从下到上;这就是为什么当设置14作为行的开头时将其绘制在底部。
  4. 考虑到这一点:如果您想在页面中间绘制线条,只需使用页面大小:

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