PdfReader reader = new PdfReader(pdfFile, new byte[0]);
pages = reader.getNumberOfPages();
假设在便携式集合中有两个pdf(每个pdf包含2个页面)。当我尝试获取页数时,它只返回1.我认为它正在考虑便携式收集文档的封面页。有没有办法获得便携式收集的页数?我使用的是Java 11和IText 5.5版本。
我找到了解决方案,但我认为没有必要检查以下内容。我认为以下解决方案不是获取总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;
}