使用iTextSharp创建PDF时,在新页面上插入了额外的空间

时间:2010-12-13 15:17:19

标签: c# .net pdf itextsharp

我正在使用iTextSharp 5.0.5创建动态PDF(asp.net c#),而且在创建新页面时,我遇到了插入额外空间的问题。第一页看起来不错,但在任何其他页面上,额外的空格显示在顶部。

我做了一个小例子,在列表中为每篇文章插入一个带有徽标和标题的新页面。如果我只插入徽标或仅标题它可以正常工作,但如果我尝试插入两个,那么会有一个额外的空间来自某个地方。任何人都对我做错了什么有任何想法?

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

2 个答案:

答案 0 :(得分:3)

第1页后面的页面上没有多余空间。问题是第1页上的空间较少。 不,这不是开玩笑。问题是由“前导”(即两条线之间的空间)引起的。前导的初始值为0.向文档添加内容时,此值将更改为不同于0的值。

您在整个文档中使用的领先优势是什么?您应该使用PdfWriter中的方法setInitialLeading()将其设置为初始前导。

答案 1 :(得分:0)

这听起来像个错误。我怀疑一些相对较新的布局方面没有在页面之间正确重置。

你介意将其交叉发布到itext-questions mailing list吗?