提取 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();
请阅读文档,例如chapter 6 of iText in Action. If you go to section 6.3.4 ("Inserting pages into an existing document"), you'll find the 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
时,您将失去插入页面中存在的所有交互功能(例如所有链接)。
我有以下 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();
请阅读文档,例如chapter 6 of iText in Action. If you go to section 6.3.4 ("Inserting pages into an existing document"), you'll find the 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
时,您将失去插入页面中存在的所有交互功能(例如所有链接)。