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.shnenglu.com/Chipset/archive/2020/10/23/217487.html