繁体   English   中英

提取pdf页面并插入到现有的pdf中

[英]Extract pdf page and insert into existing pdf

我有以下iText代码,我想将src pdf文件中的一页复制到其他pdf文件中(我已经有PdfStamper ,这里是mainPdfStamper )。

PdfReader srcReader = new PdfReader(new FileInputStream("source.pdf"));

File file = File.createTempFile("temporary", ".pdf");

PdfStamper pdfStamper = new PdfStamper(srcReader, new FileOutputStream(file));
PdfImportedPage importedPage = pdfStamper.getImportedPage(srcReader, 1);

// copying extracted page from src pdf to existing pdf
mainPdfStamper.getOverContent(1).addTemplate(importedPage, 10,10);
pdfStamper.close();
srcReader.close();

这是行不通的,我不知道如何实现这一目标。 简而言之,我想将一页从源pdf复制到现有pdf。 请帮忙。

更新

下面的代码按照Bruno的答案工作。

    PdfReader reader2 = new PdfReader(srcPdf.getAbsolutePath());
    PdfImportedPage page = pdfStamper.getImportedPage(reader2, 1);
    stamper.insertPage(1, reader2.getPageSize(1));
    pdfStamper.getUnderContent(1).addTemplate(page, 100, 100);
    // Close the stamper and the readers
    pdfStamper.close();
    reader2.close();

请阅读文档,例如iText in Action的第6章 如果转到第6.3.4节(“将页面插入到现有文档中”),则会找到InsertPages示例。

仅当p是表示您要插入页面的位置的页码, main_file是主文件的路径以及to_be_inserted到需要插入的文件的路径( dest是生成的文件的路径)时,才需要此代码。 :

PdfReader reader = new PdfReader(main_file);
PdfReader reader2 = new PdfReader(to_be_inserted);
// Create a stamper
PdfStamper stamper = new PdfStamper(reader, new FileOutputStream(dest));
// Create an imported page to be inserted
PdfImportedPage page = stamper.getImportedPage(reader2, 1);
stamper.insertPage(p, reader2.getPageSize(1));
stamper.getUnderContent(i).addTemplate(page, 0, 0);
// Close the stamper and the readers
stamper.close();
reader.close();
reader2.close();

这只是组合两个文件中的页面的一种方法。 您也可以为此使用PdfCopy 使用PdfCopy的优点是您将保留交互式页面的交互式功能。 使用PdfStamper ,您将丢失插入页面中存在的任何交互式功能(例如,所有链接)。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM