2016-07-01 259 views
0

我想画一个线,页面的中间一张A4纸的中心,但我的代码生成PDF的页脚行画一条线在iTextSharp的

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

如何做出绘制的线页面中间?

+0

你是什么意思的“在中间”?一条水平线将顶部和底部等分吗?一条垂直线将左右分开吗? – mkl

回答

2

一些事情需要考虑这里:

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

很好的答案(值得赞成),但我纠正了一个小小的误解。 –