阅读pdf页数与c++
Reading pdf Page Count with C++
我正在试着读no。在给定的pdf页面使用pdf(通过寻找"/计数xx"),但我似乎做错了什么。我将所有字符读入缓冲区,并使用字符串类的find来获得命中。但在我尝试的许多文件中,它只工作了一次。我做错了什么?
http://pastebin.com/2FAXPZhE我必须使用getline()或其他东西逐行读取它吗?
PS:我不想使用外部库,因为这是我的大学项目,我不能使用外部工具。
提前感谢。~ Deltatiger
你做错的是你的方法完全不适合你想要完成的事情。有很多不同的原因——我在这里只列出几个:
1) PDF支持增量更新,原始PDF文件和文件末尾的更新块中可能有不同的页数。
2)"/Count"可以用于完全不同的东西,而不是文件中的页面数。
3) PDF文件中的页面以树状结构存储,该树中的"/Count"字段列出了树中该部分的页面数。在有许多页的PDF文件中,您可能有许多不同的对象列出与页有关的"/Count"值。
简短的回答是,如果不了解PDF文件格式(您可以从Adobe网站下载PDF规范),就不可能正确地评估PDF文件中的页数。您要么必须使用一个能够理解文件格式并为您解析它的库,要么需要编写相应的代码。这不是一个小项目(至少可以说)。
我很感激这个问题在一年前就被提出和回答了,但如果其他人还在寻找解决方案,我提供了我自己的c++代码,现在上传到SourceForge 这里。
您将从我的代码中看到,页面计数可以位于任何数量的棘手位置,通常在压缩数据流中。
(我只是从几年前我写的一些Delphi代码中翻译出来的,所以如果有任何翻译错误,将其视为beta版本可能是明智的。)尽管如此,它还是通过了适量的测试。)
我知道这是一个较旧的线程,但我建议使用PoDoFo
库来提取PDF页面计数(或任何其他信息)。
下面是提取PDF页数的代码片段。
的例子:
namespace pdf = PoDoFo;
pdf::PdfMemDocument document;
document.Load( "mypdf.pdf" );
int pgcount{ document.GetPageCount( ) };
- 使用 cpprest (Casablanca) 返回 PDF 响应
- 如何使用打印到 PDF 打印机在 MFC 和 CView 中以编程方式打印而不提示输入文件名?
- 使用 C++/Qt(已知密码)打开加密的 PDF
- 如何获取字体数据以嵌入到 PDF 中?
- 无法为速推C++库生成 PDF 文档
- 将 QTableWidget 内容打印为 PDF
- 是否可以从从 QPrintPreviewDialog 调用的 QPrinter 对话框中删除"Write to PDF"?
- 是否有提供可调整 dpi、可选文本和 CSS 支持的 HTML 到 PDF 渲染器?
- 使用 c++ MuPDF 突出显示 PDF 中的一些单词
- 使用 C++文件 I/O 输出 pdf 文件
- Qt 5.8 and Pdf.js error
- PDF 打印机仅在未设置输出文件名时生成 PDF
- 无法加载 PDF 文档
- 从QT打印PDF文件
- 如何使用QPainter将多个Qwidgets在不同页面中打印到PDF
- Qt:自动生成电源点报告或可编辑的pdf报告
- 从 PDF 中提取第一行文本
- 如何判断Microsoft打印到 PDF 打印机驱动程序何时完成
- 如何使用我的C程序将PDF转换为图像格式(jpeg,png,..)
- 置.PDF触发断点