这是我第一次使用iText,而且我对我的解决方案的正确性有所了解。
在应用程序中,我创建一个由许多页面(几百个)组成的PDF,然后将其保存在文件中,执行以下操作:
String result = outputPath + "\\" + pdfName + ".pdf";
com.itextpdf.text.Document document = new com.itextpdf.text.Document(com.itextpdf.text.PageSize.A4, 0, 0, 0, 0);
PdfCopy copy = new PdfCopy(document, new FileOutputStream(result));
.......................................................
.......................................................
.......................................................
因此,基本上,最后我会将 .pdf 文件放入目录中。它工作正常。
现在我必须将页码计入此文件。
搜索一些文档我发现这个链接(我认为是官方文档):http://www.manning.com/lowagie2/samplechapter6.pdf
具体说:
您可以查询PdfReader实例以获取其中的页数 文件
所以在我的代码中我做了类似的事情:
try {
PdfReader pdfReader = new PdfReader(result);
System.out.println("NUMERO PAGINE PDF CONCATENAZIONE FATTURE: " + pdfReader.getNumberOfPages());
} catch (IOException e) {
e.printStackTrace(); //To change body of catch statement use File | Settings | File Templates.
}
它工作正常,但我问的是,在我的情况下(我有 PdfCopy副本,我在其上添加 PdfImportedPage 页面对象)我有一些更聪明的解决方案创建一个新的 PdfReader 对象,读取最终的pdf文件。或者它是最好的解决方案?
TNX
答案 0 :(得分:1)
完成PDF创建后,您可以创建PdfReader
实例,并询问reader
对象的总页数。那是真的。
然而:
您似乎无法从头开始创建PDF。相反,您使用PdfCopy
来连接许多不同的文档。请允许我填写您的代码:
PdfReader reader1 = new PdfReader(path1);
PdfReader reader2 = new PdfReader(path2);
Document document = new Document();
PdfCopy copy = new PdfCopy(document, new FileOutputStream(filename));
document.open();
copy.addDocument(reader1);
copy.addDocument(reader2);
document.close();
reader1.close();
reader2.close();
在您的代码段中,您省略了您已经创建PdfReader
个对象的事实,因此您无需创建新的PdfReader
实例来计算最终结果中的总页数。相反,您只需将添加到reader
的{{1}}个对象中的页面数加起来:
PdfCopy
确保在关闭int total = reader1.getNumberOfPages() + reader2.getNumberOfPages();
个实例之前计算的总页数。