java - 如何使用 IText 或使用 Java 的任何函数获取 Portable Collection Pdf 的页数
问题描述
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;
}
推荐阅读
- python - Python:带空格的 str.split() 给出索引错误
- javascript - 成功获取后如何打印成功消息?
- flutter - 未找到 MaterialApp 中的 Inkwell
- c++ - 在输入一个超出无符号短整数范围的整数后,打印无符号短整数值的规则是什么?
- java - Java中excel文档的搜索算法
- python - 加载音乐期间未定义的 pygame 错误
- java - 启动 ApplicationContext 时出错。要显示自动配置报告,请在启用“调试”的情况下重新运行您的应用程序。应用程序运行失败
- c++ - 如何正确地从函数返回中移动对象?
- hibernate - 无法在此 ManagedType [未知] 上找到具有给定名称的属性
- spring-boot - Spring Boot 项目中的 HTTP ERROR 503 Service Unavailable