如何在 iText 7 中创建页面大小不等的文档

How to create a document with unequal page sizes in iText 7

如何在 iText 7 中创建页面大小不等的文档?

在 iText7 中可以吗?

在 iText5 中,我使用了 document.setPageSize()document.newPage()

也许有用

Rectangle one = new Rectangle(70,140);
document.setPageSize(one);

如果您通过高级 API(Document.add() 及其同类)添加内容,并且所需的页面大小直接与特定内容相关联,请修改默认页面-通过 PdfDocument.setDefaultPageSize 的大小可能是最干净、最简单的方法,如下所示:

public void createPdf(String dest) throws IOException, FileNotFoundException{
    PdfWriter writer = new PdfWriter(dest);
    PdfDocument pdfDoc = new PdfDocument(writer);
    Document doc = new Document(pdfDoc);
    pdfDoc.setDefaultPageSize(PageSize.A5);//All pages will be added using this page size
    String paragraphOneText = "I have seen the face of sorrow\n" +
            "She looks away in the distance\n" +
            "Across all these bridges\n" +
            "From whence I came\n" +
            "And those spans, trussed and arched\n" +
            "Hold up our lives as we go back again\n" +
            "To how we thought then\n" +
            "To how we thought we thought then";
    String paragraphTwoText = "I have seen sorrow's face,\n" +
            "But she is ever turned away\n" +
            "And her words leave me blind\n" +
            "Her eyes make me mute\n" +
            "I do not understand what she says to me\n" +
            "I do not know if to obey\n" +
            "Or attempt a flood of tears";
    String paragraphThreeText  = "I have seen her face\n" +
            "She does not speak\n" +
            "She does not weep\n" +
            "She does not know me\n" +
            "For I am but a stone fitted in place\n" +
            "On the bridge where she walks";
    String attribution = "--Toc the Younger";

    Paragraph p = new Paragraph(paragraphOneText);
    //Current default pagesize is A5, so any new pages will be created as A5
    doc.add(p);
    //Changing default pagesize will affect any new pages that are created
    pdfDoc.setDefaultPageSize(PageSize.A5.rotate());
    //Adding an areabreak of type NEXT_PAGE will force the creation of a new page
    doc.add(new AreaBreak(AreaBreakType.NEXT_PAGE));
    p = new Paragraph(paragraphTwoText);
    doc.add(p);
    pdfDoc.setDefaultPageSize(PageSize.A5);
    doc.add(new AreaBreak(AreaBreakType.NEXT_PAGE));
    p = new Paragraph(paragraphThreeText);
    doc.add(p);
    p= new Paragraph(attribution);
    doc.add(p);
    doc.close();
}