Java iText-如何克隆文档的页面?
我正在使用iText5API克隆PDF的页面。我的要求如下: 我有一个名为“Test”的文档,它有两个不同的页面。我需要克隆每个页面,即如果测试文档有两个页面,我需要克隆第一个页面&然后是第二个页面,在同一测试文档中总共有4个页面。我需要使用iText API进行此设置。我试过一些代码,但它给了我一些例外&也不能满足我的要求 代码:Java iText-如何克隆文档的页面?,java,pdf,itext,Java,Pdf,Itext,我正在使用iText5API克隆PDF的页面。我的要求如下: 我有一个名为“Test”的文档,它有两个不同的页面。我需要克隆每个页面,即如果测试文档有两个页面,我需要克隆第一个页面&然后是第二个页面,在同一测试文档中总共有4个页面。我需要使用iText API进行此设置。我试过一些代码,但它给了我一些例外&也不能满足我的要求 代码: public void clonePageOfPdf() throws IOException, DocumentException{ Docume
public void clonePageOfPdf() throws IOException, DocumentException{
Document doc = null;
PdfReader reader = null;
FileInputStream inputStream = null;
FileOutputStream outputStream = null;
//Assign
inputStream = new FileInputStream(new File(sourcefile));
outputStream = new FileOutputStream(new File(destfile));
doc = new Document();
PdfCopy copy = new PdfSmartCopy(doc, outputStream);
doc.open();
reader = new PdfReader(inputStream);
for(int page = 0; page < reader.getNumberOfPages(); page++){
PdfImportedPage importedPage = copy.getImportedPage(reader, page);
//Duplicate
for(int i = 0; i < 1; i++){
copy.addPage(importedPage);
}
}
copy.freeReader(reader);
reader.close();
doc.close();
outputStream.close();
inputStream.close();
}
}
有人能帮我更新代码吗?出于某种原因,我建议的
selectPages()
方法不再适用于iText 5的最新版本(它适用于旧版本),因此我查看了您的原始代码,并对其进行了如下修改:
public void manipulatePdf(String src, String dest) throws IOException, DocumentException {
Document document = new Document();
PdfReader reader = new PdfReader(src);
PdfCopy copy = new PdfSmartCopy(document, new FileOutputStream(dest));
document.open();
for(int page = 1; page <= reader.getNumberOfPages(); page++) {
PdfImportedPage importedPage = copy.getImportedPage(reader, page);
for(int i = 0; i < 2; i++) {
copy.addPage(importedPage);
}
}
document.close();
reader.close();
}
如果你想添加两页而不是一页,你需要
i<2
而不是i<1
乍一看,你可能会想:嘿,这个布鲁诺家伙把我的问题作为一个完全不同的问题的重复关闭了!但是试试看。扔掉你的PdfCopy
代码,用PdfStamper
代码替换它。使用非常具体的选项,例如“1,1,2,2”
。您将发现,selectPages()
方法也可用于重复页面。@BrunoLowagie您好,感谢selectPages()方法。但是,即使重复selectPages()方法,也无法重复页面。你能用一个小片段来演示吗?应该是这么简单:PdfReader reader=newpdfreader(src);阅读器。选择页面(“1、1、2、2”);PdfStamper stamper=新PdfStamper(读取器,新文件输出流(dest));压模关闭()
@BrunoLowagiereader=新的PdfReader(inputStream);阅读器。选择页面(“1,1,2,2”);PdfStamper压模=新的PdfStamper(读卡器,输出流);压模关闭()代码>这是我使用过的代码。但我仍然无法在输出PDF中看到重复页面。知道为什么吗?不,这对我有用。您正在使用哪个版本的iText?你能分享这个PDF文档吗?
public void manipulatePdf(String src, String dest) throws IOException, DocumentException {
Document document = new Document();
PdfReader reader = new PdfReader(src);
PdfCopy copy = new PdfSmartCopy(document, new FileOutputStream(dest));
document.open();
for(int page = 1; page <= reader.getNumberOfPages(); page++) {
PdfImportedPage importedPage = copy.getImportedPage(reader, page);
for(int i = 0; i < 2; i++) {
copy.addPage(importedPage);
}
}
document.close();
reader.close();
}
for(int page = 1; page <= reader.getNumberOfPages(); page++)
for(int i = 0; i < 2; i++)