检索此创建的 PDF 文件的页数的更智能解决方案是什么?
What is the smarter solution to retrieve the number of pages of this created PDF file?
这是我第一次使用 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 文件放到一个目录中。它工作正常。
现在我必须计算这个文件的页码。
搜索一些文档我发现这个link(我认为是官方文档):http://www.manning.com/lowagie2/samplechapter6.pdf
具体说:
You can query a PdfReader instance to get the number of pages in the
document
所以在我的代码中我做了这样的事情:
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 页面object)我有一些更聪明的解决方案来创建一个新的 PdfReader 对象来读取最终的 pdf 文件。还是最好的解决方案?
Tnx
创建完 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
实例来计算页面的总数最后结果。相反,您可以将添加到 PdfCopy
:
的 reader
对象的页数相加
int total = reader1.getNumberOfPages() + reader2.getNumberOfPages();
请确保在关闭 PdfReader
个实例之前计算总页数。
这是我第一次使用 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 文件放到一个目录中。它工作正常。
现在我必须计算这个文件的页码。
搜索一些文档我发现这个link(我认为是官方文档):http://www.manning.com/lowagie2/samplechapter6.pdf
具体说:
You can query a PdfReader instance to get the number of pages in the document
所以在我的代码中我做了这样的事情:
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 页面object)我有一些更聪明的解决方案来创建一个新的 PdfReader 对象来读取最终的 pdf 文件。还是最好的解决方案?
Tnx
创建完 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
实例来计算页面的总数最后结果。相反,您可以将添加到 PdfCopy
:
reader
对象的页数相加
int total = reader1.getNumberOfPages() + reader2.getNumberOfPages();
请确保在关闭 PdfReader
个实例之前计算总页数。