Pdfium跟poppler类似,也是一个解析PDF文件的SDK,2014年Google从Foxit收购7%的代码,用于Chrome浏览器展示网页里的PDF文件。
从依赖关系上,pdfium和foxit以及google都无关,因为谷歌把他开源了。Pdfium经过这么久一直持续的升级和维护,bug比poppler少,速度也比poppler快,协议用Apache也要比poppler的GPL宽松的多。只不过在托管在谷歌服务器上,土鳖国的码农下载得找梯子。
免费的东西没有一帆风顺拿到的,按照目前谷歌官方pdfium的指导,在Windows上无法编译成功[老版本可以],即使能编译通过,实际应用中链接也有问题。
从网上搜到的几乎所有编译方法都跟谷歌的官方指导大同小异,因此,都毫无例外的编译失败或者即使编译成功实际应用中链接也存在各种奇怪的bug。
好在github上bblanchon写了一个编译方法,总体上来说非常好用。有一个地方要修改,就是去掉批处理命令里的python调用。
https://github.com/bblanchon/pdfium-binaries
bblanchon还提供了pdfium所有版本(Windows,Linux,MacOS)的编译结果,用户可直接下载使用。
https://github.com/bblanchon/pdfium-binaries/releases
如果必须自己编译,可以参照如下步骤。
1. 安装工具
git, visual studio, Window SDK, python, powershell, 7zip
最好都是最新版,安装完毕手动加到环境变量PATH里,目的是能命令行调用,git和powershell还加到右键菜单会更方便。
2.设置代理
谷歌的东西通常通过代理[需要自己解决]访问,设置方式如下。
不带帐户密码
set http_proxy=http://proxy.server.com:proxyport
set https_proxy=https://proxy.server.com:proxyport
git config --global http.proxy %HTTP_PROXY%
git config --global https.proxy %HTTPS_PROXY%
带帐户密码
set http_proxy=http://DOMAIN\proxyuser:proxypwd@proxy.server.com:proxyport
set https_proxy=https://DOMAIN\proxyuser:proxypwd@proxy.server.com:proxyport
git config --global http.proxy %HTTP_PROXY%
git config --global https.proxy %HTTPS_PROXY%
也可以一步到位,格式如下
git config --global https.proxy 用户名:密码@代理的IP地址:端口号
git config --global http.proxy 用户名:密码@代理的IP地址:端口号
也可以不按照上面去设置,直接加到环境变量里一劳永逸也行。
3. 下载
depot_tools (Windows版本可以直接下载)
https://storage.googleapis.com/chrome-infra/depot_tools.zip
pdfium
git clone https://pdfium.googlesource.com/pdfium
pdfium通常一次下载不全,编译配置环境前会自动下载其余部分(通常会有一大堆third party),网很重要。
4. 编译
编译过程中会先同步更新,也就是下载一些代码,然后再编译。如果不希望同步可手动注释掉或者删掉一些命令。
编译会修改pduium里的文件,因此无论编译成功与失败,原来的pdfium文件不能继续使用,不能在原来基础上再次编译。
为了解决这个问题可以先备份一份压缩的pdfium,再次编译前解压覆盖掉原来位置的pdfium文件。
编译过程用的ninja,但Windows上visual studio是必须的。
理论上powershell命令行执行build.bat就行了。如果出错,按照提示信息修改就行。
5. 文件
bblanchon的批处理每次执行都会下载一次depot_tools并覆盖掉原来的,实际场合可屏蔽掉这行命令节约时间。
再者就是屏蔽掉批处理里的python命令[不用depot_tools里的python.exe],否则可能编译失败,至少在我的机器上
Windows环境下必须这么做,否则编译失败。
编译中可能警告NO_AUTH_BOTO_CONFIG没有设置,可以不理,有强迫症的可在环境变量里随便乱填点信息就没警告了。
下面有个简单的备份,用于Windows上下载和编译pdfium,如果前期准备工作做好,执行build.bat就行。
下面有个简单的备份,用于Windows上下载和编译pdfium,如果前期准备工作做好,执行build.bat就行。
http://www.cppblog.com/Files/Chipset/pdfium-build-backup.zip