如何使用 C++ 程序从 PDF 文件中提取页面尺寸?
是否有任何轻量级、跨平台、易于构建/安装的库可以提供帮助?
谢谢 :)
[编辑]
我试图在windows下构建podofo,但没有成功。LibHaru 和 PDFHummus 用于渲染 pdf,而不是解析它们的数据。
[编辑和解决方案]
我终于在windows下构建了podofo!
(顺便说一句,在 Ubuntu 下,这只是一个问题sudo apt-get install libpodofo0.9.0 libpodofo-dev libpodofo-utils
)
这实际上是一个 CMake 2.8.10 错误,切换回 2.8.3 解决了问题(谢谢)
如果有人有兴趣,这里是如何在 windows 下开始使用 podofo(我将演示如何构建调试/共享版本):
- 下载所需的库(freetype、jpeg、openssl、tiff、zlib)并安装它们(我建议,复制 in 下
LIB_NAME\lib
的所有文件C:\libraries\lib
,同样的事情\include
) - 安装CMake 2.8.3
- 将 MinGW\bin 和 CMake\bin 添加到
PATH
- 下载podofo并将其解压缩到某个地方,让我们说
C:\downloads\podofo-0.9.2
- 创建一个新目录
C:\downloads\podofo-0.9.2\podofo-shared-debug
- 打开命令提示符然后输入
cd C:\downloads\podofo-0.9.2\podofo-shared-debug
运行此命令为 podofo 的调试/共享版本准备 MinGW makefile
cmake -G "MinGW Makefiles" .. -DCMAKE_INCLUDE_PATH=C:\libraries\include -DCMAKE_LIBRARY_PATH=C:\libraries\lib -DPODOFO_BUILD_SHARED:BOOL=TRUE -DCMAKE_BUILD_TYPE=DEBUG
然后只需调用 make
mingw-make.exe
如果您使用的是代码块,以下是安装/使用 podofo 的方法:
9.1。复制以下内容
podofo-0.9.2\podofo --> C:\libraries\podofo-0.9.2\include\podofo
podofo-0.9.2\src --> C:\libraries\podofo-0.9.2\include\src
podofo-0.9.2\podofo-shared-debug\podofo_config.h --> C:\libraries\podofo-0.9.2\include\podofo_config.h
podofo-0.9.2\podofo-shared-debug\src\libpodofo.dll.a --> C:\libraries\podofo-0.9.2\lib-shared-debug\libpodofo.dll.a
podofo-0.9.2\podofo-shared-debug\src\libpodofo.dll --> C:\libraries\podofo-0.9.2\bin-shared-debug\libpodofo.dll
9.2. -lpodofo
在链接器选项中使用,然后添加C:\libraries\podofo-0.9.2\include
到编译器的搜索目录和C:\libraries\podofo-0.9.2\lib-shared-debug
链接器的搜索目录
回到我最初的问题,最接近的答案是“如何使用 C++ 程序(使用 podofo)从 PDF 文件中提取页面尺寸?” 这是:
#include <iostream>
#include <podofo/podofo.h>
int main (int argc, char* argv[])
{
PoDoFo::PdfMemDocument document;
try
{
document.Load("path/to/the/file.pdf");
}
catch (PdfError& e )
{
// a password is required to read this pdf
return -1;
}
try
{
PoDoFo::PdfRect pageSize = document.GetPage(0)->GetPageSize(); // yes, it's "0-based"
std::cout << "width: " << pageSize.GetWidth() << "\t\theight: " << pageSize.GetHeight() << std::endl;
}
catch (PdfError& e )
{
// page number error
return -2;
}
return 0;
}