2010-12-13 52 views
1

我使用iTextSharp 5.0.5創建動態PDF(asp.net c#),並且在創建新頁面時插入額外空間時出現問題。第一頁看起來很好,但在其他頁面上,額外的空間顯示在頂部。使用iTextSharp創建PDF時在新頁面上插入額外空間

我做了一個小例子,爲列表中的每篇文章插入一個帶有徽標和標題的新頁面。如果我只插入徽標或只有標題可以正常工作,但是如果我嘗試插入兩者,則會在某處插入額外空間。任何人有任何想法我做錯了什麼?

public static void CreatePDF(List<Item> Articles) 
{ 
    Document document = new Document(PageSize.A4, 35, 35, 35, 35); 
    MemoryStream memoryStream = new MemoryStream(); 
    PdfWriter writer = PdfWriter.GetInstance(document, memoryStream); 

    document.Open(); 

    for (int i = 0; i < Articles.Count; i++) 
    { 
     if (i > 0) 
     { 
      document.NewPage(); 
     } 

     Image logo = Image.GetInstance(@"C:\logo.gif"); 
     document.Add(logo); 

     Paragraph title = new Paragraph("test title", new Font(Font.FontFamily.HELVETICA, 20, Font.NORMAL, CMYKColor.BLACK)); 
     document.Add(title); 
    } 

    document.Close(); 

    SendPDFResponse(memoryStream, "myfile.pdf"); 
} 

感謝,

Annelie

+0

它一定很難使用這個庫...我過去也有類似的需求 - 開始考慮iTextSharp,最終使用了商業的HTML to PDF工具(因爲它更快更簡單,非常好的結果)。 – rsenna 2010-12-13 15:25:34

回答

3

在第1頁後面的頁面上沒有額外的空間。問題是頁面1上的空間較少。 不,這不是玩笑。問題是由「領先」(即:兩行之間的空間)引起的。該前導的初始值爲0.向文檔添加內容時,該值將更改爲不同於0的值。

在整個文檔中使用的主導功能是什麼?您應該將其設置爲PdfWriter中setInitialLeading()方法的最初引導。

+0

我沒有設置它,所以它使用的字體大小的默認值是150%(在上面的情況下是20,所以領先的就是30)。這可能並非總是如此,但我會將最初的數字設置爲30,並希望它看起來很好! :) 謝謝您的幫助。 – annelie 2010-12-14 12:31:37

0

這聽起來像一個錯誤。我懷疑佈局的一些相對較新的方面不能在頁面之間正確重置。

您介意將此內容交叉發送到itext-questions mailing list嗎?

+0

會做,歡呼! – annelie 2010-12-14 09:36:43