PdfReader reader = new PdfReader(pdfFile, new byte[0]);
pages = reader.getNumberOfPages();
假设可移植集合中有两个pdf(每个pdf包含2页)。当我尝试获取页数时,它仅返回1。我认为它正在考虑便携式收集文档的封面。有什么方法可以获取可移植的页数吗? 我正在使用Java 11和IText 5.5版本。
答案 0 :(得分:0)
我为此找到了解决方案,但我认为没有必要检查以下内容。我认为以下解决方案不是获取pdf总页数的有效方法。
private int getNumberOfPages(PdfReader reader) {
int pages = 0;
PdfObject obj;
for (int i = 1; i <= reader.getXrefSize(); i++) {
obj = reader.getPdfObject(i);
if (obj != null && obj.isStream()) {
PRStream stream = (PRStream)obj;
byte[] b;
try {
b = PdfReader.getStreamBytes(stream);
PdfReader pdfReader = new PdfReader(b);
pages += pdfReader.getNumberOfPages();
} catch(InvalidPdfException e) {
} catch (IOException e) {
}
}
}
if (pages == 0) {
pages = reader.getNumberOfPages();
}
return pages;
}