Linux上编译poppler很容易,这里懒得罗嗦。Windows上编译poppler的方法在网上一搜一大堆,实测确实遇到过一个成功的(vcpkg),但是编译出来的Rel版二进制很大,而且不能编译成QT和GLIB版本。这里介绍另一种方法,供后来者参考,希望能节约你一些时间。


实测E文Windows,Edition: Windows 10 Pro, Version: 2H2 Build: 19042.572 上OK。实测虚拟机上Win7 Ultimate Sp1 64位上也OK。实测虚拟机上Windows XP Pro, Sp2 32位上编译能成功,但结果不可用。如果你仍在用Windows XP,没有必要继续浏览此文。


免费的SDK解析PDF文件可选的有Poppler, MuPDF, PDFium等,三者中最后一个Apache协议,最宽松,Bug也最少,是最佳之选,只可惜在土鳖国下载谷歌的东西很困难,github上有编译好的二进制,只不过内嵌签名,如果一般性质的使用,是个很好的选择[https://github.com/bblanchon/pdfium-binaries]。MuPDF要么购买要么AGPL协议,对于多数人不可用 [https://mupdf.com/downloads/index.html]。最后只剩下Poppler可选,尽管GPL协议,而且获取容易,进程间通信也可以商用。当然,如果学生练手,不用关心版权,任何一个都可用。

安装poppler最简单的办法就是通过msys2(可能cygwin也行),先把msys2 [64] 装上,再把开发工具系列以及poppler的依赖(cairo, iconv, glib, boost, lcms2, zlib, png, tiff, jpeg等等很多)都装上,如果用QT也得装QT,用GTK就得装GTK。其实msys2里面就有poppler(mingw编译的版本),装上就行。但是如果需要特定环境使用,比如Visual Studio,或者觉得msys2里的poppler版本不好用[我测试觉得它不太好用],那就得自己编译。安装msys2和开发环境的方法网上一搜一大堆,这里就不罗嗦了。

固然不排除有人勇气可嘉,想独立编译poppler试试,我不是在此泼冷水,poppler依赖几十个dll,把这些依赖找全自己独立编译的想法根本不现实,因为编译依赖时还需要一大堆别的依赖,由于网络原因很难都顺利下载下来,即使都下载下来,编译方法各式各样,有些用常规方法根本就编译不过。我曾经编译过Poppler 0.59版就用的这个套路,最后不得不修改了很多源代码才编译成功,得到一个可用的版本。想到编译的艰辛过程,poppler 0.59版我用了一年没升级...

装完了msys2把编译器MinGW和make(可能是mingw32-make)加到PATH路径里,一般是***/mingw64/bin

接下来把CMake装上,可在这里下载https://cmake.org/files/

Poppler下载下来,地址https://poppler.freedesktop.org/ 注意别忘了字体,因此poppler-data也需要,在安装完poppler再装它

编译poppler可用Visual Studio或者mingw[前面msys2里装了],前者需要vcpkgpower shell命令编译,由于有一堆依赖的库,vcpkg编译前需要逐个下载那些依赖再编译,这个套路理论上没问题,但实际操作起来很难成功,这跟前面想独立编译poppler的想法如出一辙,因为有些依赖的库太难下载[也许因为我这里网络太糟?]。配合msys2安装依赖,用mingw编译poppler要容易的太多

较新的poppler只能编译64位版本可用,如果想编译32poppler也能成功,但编译完没法在32位系统上用,因为依赖的库有些在32位系统下无法运行,即使在32位系统上编译出32位的poppler也用不了,我在虚拟机上测试过多次,这样看来,曾经流行但老旧的32Windows Xp 上没法用poppler了,好在这年头用Xp的人很少。

下载poppler源码后解压(可用7-Zip),然后打开cmake-gui选择源代码路径和存放的目标文件夹编译就行了。如果希望出现.lib别忘了勾选CMAKE_GNUtoMS选项,编译最好指定Release版,否则默认编译的Debug版体积巨大,安装路径里不能有空格,因为安装时需要ming32-make[有人见过mingw64-make吗?],它不支持路径里有空格。如果硬件不是骨灰级,编译时可开启多任务,我用的电脑CPU是i7-8700,直接命令行mingw32-make –j12编译需要几分钟的样子

下面不要选Visual Studio ***,应该选MinGW Makefiles


需要哪些选项勾选上,Configure失败的回到前面msys2里装上再重来,这个过程可能需要往复多次。
编译前最好指定Release版,如果不用手工指定,会默认编译Debug版,那样编译出的dll体积巨大!

 


如果前面勾选了CMAKE_GNUtoMS,编译中还会用到Visual Studio,而且编译器版本不能太低。


编译完用命令装mingw32-make install,会装到前面指定的路径c:/poppler/vc下,接下来再安装poppler-data
套路一样,由于它不需要依赖,要容易很多。


由于我不用Visual Studio,因此CMAKE_GNUtoMS勾选后编译的结果在Visual Studio下是否能用不知道,不过
不勾选该项时用MinGW编译的版本是没有任何问题的,我用poppler解析PDF文件做比对工具就用上述方法编译的。

http://www.cppblog.com/Chipset/archive/2020/10/23/217487.html