使用itext 7添加PDF新页面

24

我正在使用以下代码尝试创建一个PDF文档,并且在生成时我的PDF文档内容会在同一页上重叠(即第1页)。

我发现iText 7中缺少

document.newPage();

方法。如何在不使用pdfDocumet.copyPages(...)或PDFmerger的情况下添加页面到我的PDF文档中?

        PdfDocument pdfDoc = new PdfDocument(new PdfWriter(dest));      
        pdfDoc.addNewPage();
        Document PageOnedocument = new Document(pdfDoc,PageSize.A4);            
        addPageOneContents(PageOnedocument);  


        pdfDoc.addNewPage();
        Document PageTwodocument = new Document(pdfDoc,PageSize.A4);            
        addPageTwoContents(PageTwodocument);  

        pdfDoc.close();
        PageOnedocument.close();
        PageTwodocument.close();
2个回答

54

iText 7中,newPage方法已成为区域分页的一种特殊情况:

Document document = ...;
[....add some content...]
document.add(new AreaBreak(AreaBreakType.NEXT_PAGE));
[...add some content on next page...]

这个有文档记录吗? - AllirionX
1
@AllirionX 在 https://itextpdf.com/en/resources/books/itext-7-building-blocks/chapter-2-adding-content-canvas-or-document 中 - 但它在更复杂的“AreaBreak”用法中有点隐藏。 - mkl
谢谢!这非常有用,我一直在尝试将一个简单的段落添加到新页面,但却让我发疯了。 - AllirionX
@mkl在尝试访问该链接时收到“拒绝访问”的提示。这只适用于商业访问吗? - Alex P.
1
@AlexP. "这只是商业访问吗?" - 不是的,这本书只是转移到了不同的URL,详见https://kb.itextpdf.com/home/it7kb/ebooks/itext-7-building-blocks/chapter-2-adding-content-to-a-canvas-or-a-document - 市场部门喜欢重新组织网站... - mkl

0
如果你正在使用C#并且重构引用了iText 5的代码(就像我一样),请尝试将iText 7方法放在一个覆盖中。
public static class Itext7DocumentExtensions
{
    public static void NewPage(this Document document)
    {
        document.Add(new AreaBreak(AreaBreakType.NEXT_PAGE));
    }
}

现在你可以调用 document.NewPage();

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接