gpt4 book ai didi

java - iText - 如何克隆文档页面?

转载 作者:行者123 更新时间:2023-12-02 11:40:23 27 4
gpt4 key购买 nike

我正在使用 iText 5 API 克隆 PDF 页面。我的要求如下:我有一个名为“Test”的文档,其中有 2 个不同的页面。我需要克隆每个页面,即如果测试文档有两页,我需要克隆第一页,然后克隆第二页,在同一个测试文档中总共有 4 页。我需要使用 iText API 进行此设置。我已经尝试了一些代码,但它给了我一些异常(exception)并且也不能满足我的要求。

代码:

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();
}

有人可以帮我更新代码吗?

最佳答案

由于某种原因,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();
}

这些是我所做的更改:

for(int page = 1; page <= reader.getNumberOfPages(); page++)

页码从第 1 页开始,而不是从第 0 页开始,这会影响您的 for -循环。

for(int i = 0; i < 2; i++)

如果您想添加 2 页而不是一页,则需要 i < 2而不是i < 1 .

关于java - iText - 如何克隆文档页面?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48617077/

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