我正在使用iText 5 API来克隆PDF页面。我的要求如下: 我有一个名为" Test"它有2个不同的页面。我需要克隆每个页面,即如果测试文档有两个页面,我需要克隆第一页和然后是第二页,它在同一个测试文档中共有4页。我需要使用iText API进行此设置。我已经尝试了一些代码,但它给了我一些例外&也不能满足我的要求。
代码:
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();
}
}
请帮我解决这个问题。
更新代码
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();
reader = new PdfReader(inputStream);
reader.selectPages("1,1");
PdfStamper stamper = new PdfStamper(reader, outputStream);
stamper.close();
reader.close();
//doc.close();
outputStream.close();
inputStream.close();
}
任何人都可以帮我更新代码吗?
答案 0 :(得分:0)
出于某种原因,我建议的selectPages()
方法不再适用于最近版本的iText 5(它与旧版本一起工作),所以我查看了原始代码,并按照以下方式对其进行了调整:< / p>
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++)
页码从第1页开始,而不是从第0页开始,这会对您的for
循环产生影响。
for(int i = 0; i < 2; i++)
如果您想添加2个页面而不是1个页面,则需要i < 2
而不是i < 1
。