雜事太多,一直忙來(lái)忙去沒(méi)時(shí)間寫(xiě)點(diǎn)正經(jīng)的東西。最近寫(xiě)了個(gè)工具,用于比較兩個(gè)PDF文件的不同,把差異點(diǎn)標(biāo)出來(lái)。
后端用Poppler解析PDF文件,然后比較,生成三個(gè)html,可用Chrome或Firefox(Edge和IE就悲劇了)打開(kāi)。
查看不同點(diǎn)。
這Poppler雖說(shuō)免費(fèi)開(kāi)源,但Bug無(wú)數(shù),真心難用。唉,看在不花錢的份上,忍了...

源代碼量3萬(wàn)行的樣子,運(yùn)行依賴33個(gè)dll,算法有點(diǎn)復(fù)雜,雖然距離我的意愿依舊遙遠(yuǎn),但總算見(jiàn)到雛形了。

下面的截圖是簡(jiǎn)單的比較了兩個(gè)PDF文件的結(jié)果,鼠標(biāo)點(diǎn)擊最右欄就能標(biāo)出來(lái)且能自動(dòng)對(duì)齊變更點(diǎn),添加或者刪除的能對(duì)應(yīng)原始位置。



下面是個(gè)文字變更的邏輯對(duì)齊部分截圖。文字屬性有變更的地方鼠標(biāo)放上去能彈出不同之處,黑底綠字。



下面是單獨(dú)比較光柵圖片的截圖,鼠標(biāo)點(diǎn)擊最右欄能自動(dòng)對(duì)齊,添加或刪除的則能對(duì)應(yīng)到原始位置,圖片變更的會(huì)標(biāo)出所有變更點(diǎn)。


大致就如同前面三個(gè)截圖的樣子(目前缺矢量圖的比較),應(yīng)該能滿足一般的PDF文檔比較需求了。

諸位過(guò)客可以下載一個(gè)簡(jiǎn)單用例到上,解壓[可以考慮7z]Chrome(或者Firefox,別用Edge和IE)
瀏覽器打開(kāi)看看效果。
在這里下載/Files/Chipset/test.zip

以上附件很小,麻雀雖小五臟俱全,該有的東西基本都有,可以比較的單個(gè)PDF文件1000頁(yè)以上,且速度很快。
以上展示內(nèi)容用的文字后貼背景頁(yè)面格式,將來(lái)
[升級(jí)中]解析PDF用BSD協(xié)議的pdfium替換GPL協(xié)議的Poppler,
頁(yè)面展示借助PDF.js,但不再用文字和貼背景這種辦法,再接下來(lái)做個(gè)單機(jī)界面,不再用瀏覽器,算是升級(jí)方向吧。

關(guān)于比較工具,下面多說(shuō)幾句。
做內(nèi)容比較的工具
Draftable很成功,用C#寫(xiě)的,可以比較Office和PDF文件,各格式任意混比,只能比文字。
我的只能比PDF文件,比較內(nèi)容是文字和光柵圖,有個(gè)Kiwi free pdf comparer類似,只不過(guò)需要Java運(yùn)行環(huán)境。
此外,ABBY的Fine Reader和Adobe的Acrobat也都有比較功
能,只不過(guò)精度和速度都明顯弱一些。至于視覺(jué)
比較的工具,由于跟位置有關(guān),大多數(shù)場(chǎng)合幾乎等同于廢物,這種網(wǎng)上一搜一大把,很多免費(fèi)。純文本內(nèi)容的比較
工具就更多了,網(wǎng)上一搜一大堆,這里就不必啰嗦了。