使用 itext 7 在 PDF 中添加新页面

Posted

技术标签:

【中文标题】使用 itext 7 在 PDF 中添加新页面【英文标题】:Adding a new page in PDF using itext 7 【发布时间】:2017-04-13 01:38:26 【问题描述】:

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

我看到了

document.newPage();

iText 7 中缺少方法。如何在 iText 7 中不使用 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();

【问题讨论】:

【参考方案1】:

如果您正在使用 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();

【讨论】:

【参考方案2】:

在 iText 7 中,newPage 方法已成为区域中断的特例:

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

【讨论】:

这是否记录在某处? @AllirionX 在itextpdf.com/en/resources/books/itext-7-building-blocks/… - 但它在更复杂的AreaBreak 用法中有点隐藏。 谢谢!这非常有用,我在尝试将一个简单的段落添加到新页面时很生气。

以上是关于使用 itext 7 在 PDF 中添加新页面的主要内容,如果未能解决你的问题,请参考以下文章

使用 iTextSharp 添加水印文本时,PAC 工具中出现 iText 7 警告

如何从iText 7中的PDF格式的轮廓/书签访问矩形,拟合类型,缩放,页码

使用 iText 将 SVG 转换为 PDF,SVG 未在 PDF 中完全显示

如何使用 iText 7 使下划线文本可访问

使用 Itext 将 Pdf 页面转换为字节数组

Itext 7使用pdf中的材料ui图标