2016-07-01 281 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

很好的答案(值得贊成),但我糾正了一個小小的誤解。 –