gpt4 book ai didi

java - 如何在现有 iText 文档中添加封面/PDF

转载 作者:行者123 更新时间:2023-12-02 04:47:15 28 4
gpt4 key购买 nike

我需要一些有关 iText 的帮助。我需要在其他现有的 iText 文档或 PDF 文档中添加现有的 pdf 封面。有人可以帮助我吗?我在一些书籍中进行了搜索(iText in action),但它有点复杂。

最佳答案

假设我们有一个名为 pages.pdf 的文档我们要添加封面 hero.pdf作为本文档的封面。

方法 1:使用 PdfCopy

看看AddCover1示例:

PdfReader cover = new PdfReader("hero.pdf");
PdfReader reader = new PdfReader("pages.pdf");
Document document = new Document();
PdfCopy copy = new PdfCopy(document, new FileOutputStream("pages_with_cover.pdf"));
document.open();
copy.addDocument(cover);
copy.addDocument(reader);
document.close();
cover.close();
reader.close();

结果是一个文档,您首先拥有封面,然后拥有文档的其余部分:pages_with_cover.pdf

方法 2:使用 PdfStamper

看看AddCover2示例:

PdfReader cover = new PdfReader("hero.pdf");
PdfReader reader = new PdfReader("pages.pdf");
PdfStamper stamper = new PdfStamper(reader, new FileOutputStream("cover_with_pages.pdf"));
stamper.insertPage(1, cover.getPageSizeWithRotation(1));
PdfContentByte page1 = stamper.getOverContent(1);
PdfImportedPage page = stamper.getImportedPage(cover, 1);
page1.addTemplate(page, 0, 0);
stamper.close();
cover.close();
reader.close();

在本例中,我们采用原始文档 pages.pdf 并插入与封面页面大小相同的新页面 1。然后我们得到这个 page1 并将 hero.pdf 的第一页添加到这个第一页。结果是cover_with_pages.pdf

这两种方法有什么区别?

使用PdfCopy,您可能会丢失在文档级别定义的一些属性(例如页面布局设置),但保留了两个文件的交互功能。如果您想保留标记、表单字段等,您可能需要设置一些参数...但对于简单的 PDF,您不需要所有这些。

使用 PdfStamper,您可以保留在 pages.pdf 文档级别定义的属性,但您会丢失封面页的所有交互功能(如果有) )。如果您想将封面定义为工件并且原始封面页具有奇数页面边界,您可能需要调整示例,但这会让我们在这个简单的答案中讨论这个问题太过分。

关于java - 如何在现有 iText 文档中添加封面/PDF,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29563942/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com