作者:馬健
郵箱:stronghorse_mj@hotmail.com
發布:2006.05.26
更新:2008.08.24
補充說明:此文成文較早,其中對Pdg2Pic、FreePic2Pdf的描述早已過時,請參照最新版Pdg2Pic、FreePic2Pdf的使用說明。
一、前言
二、截圖法
三、打印法
四、BooX Viewer
五、pdg2bmp&jpg&tif&pdf&txt
六、Pdg2Pic
七、方法之比較與展望
八:題外話:圖像文件轉PDF
一、前言
PDG文件是超星公司電子圖書的專有格式,需要用超星公司的專用瀏覽器才能閱讀。本文討論PDG轉圖像、PDF的方法,僅出於研究目的,並無意對超星公司的版權進行任何形式的侵犯,也不希望任何人用本文討論的工具或方法從事侵權活動。如果需要瀏覽PDG電子書,請通過購買點卡等方式,以合法的途徑獲得。
本文假定用戶通過合法的手段獲得PDG文件,只是由於希望能夠在比超星瀏覽器更好、更方便的瀏覽器上閱讀,並且不對轉換出來的文件進行擴散的情況下,才需要將PDG文件轉換成圖像文件或PDF文件。
二、截圖法
簡單點說,就是通過截圖的方法,直接將超星瀏覽器中顯示的內容,截為圖片,再將圖片轉換成PDF文件。
這個方法可能是世界上最簡單、最朴素,也是最容易想到的方法,並且對於所有版本的超星瀏覽器和所有能夠正常顯示的PDG文件均適用。制約這個方法的因素包括:
- 頁面大小超出顯示區域,導致截圖截不全。解決的辦法包括:找一台支持高分辨率設置的PC(現在17"液晶已經很便宜,19"也快平民化了);如果顯卡支持旋轉顯示,則將整個屏幕旋轉90°顯示,方便顯示細長頁面。
- 手工一頁一頁截圖,勞動強度比較大。解決的辦法就是用各種現成的按鍵、鼠標錄制/播放軟件與屏幕截圖軟件相結合,或者自己做一個連翻頁帶截圖的小軟件,實現自動化操作。
- 截出來的圖像可能需要進行整理,包括切邊、圖像文件格式轉換等。
總之,截圖法雖然有一些限制,用起來也比較麻煩,但很難被超星屏蔽,不失為一種終極的方法。
三、打印法
即在超星瀏覽器中發布打印命令,將正在瀏覽的PDG文件打印到PDF虛擬打印機(包括Acrobat PDF打印機、PDFFactory打印機等),成為PDF文件。
這種方法也是較早被用於轉換PDG文件的方法之一,而且用起來非常簡單、方便,因此廣為流傳,導致后來超星閱讀器針對這種方法加了一些限制,但是這些限制很快就被突破,然后雙方就這樣樂此不 疲、義無反顧、周而復始地一輪、一輪折騰下去。雖然在無關的人看來有點無聊,但是投身其中的人經常都會為每一個微小的突破而激動 ,還真是有精神寄托的人生。
目前制約這個方法的因素包括:
- 超星瀏覽器對PDF打印機的封鎖。 新版超星瀏覽器會檢查打印機的名稱,發現是PDF打印機則不讓打印。不過超星軟件畢竟沒有人智能,打印機被人一改名就檢測不出來了。也有人先將PDG打印到支持PostScript(PS)文件格式的真實打印機,再用Acrobat將PS文件轉換成PDF文件,以繞過超星對虛擬打印機的檢查。
- 超星瀏覽器對打印頁數的限制。超星瀏覽器會限制合法用戶每個月的打印總頁數,夠數(每月一千頁)后就不允許打印。解決的辦法包括將ssreader.ul文件屬性改為只讀,或定期對這個文件進行備份、恢復。
- 超星瀏覽器對打印效果的限制。 新版本的超星瀏覽器可能對以前的限制與反限制游戲終於厭倦了,因此干脆在打印的時候降低打印質量,導致打印出來的PDF圖像質量與原始PDG文件差很多。針對這一招,目前網上提出的解決辦法包括將新版DLL文件替換為舊版DLL,或提高打印機DPI設置等。
總之,在我看來,打印法雖然簡單方便,打印黑白圖像也問題不大,但是打印灰度/彩色圖像會出現圖像質量衰減或文件膨脹等問題,所以至少我自己不到不得已是不會用的。
四、BooX Viewer
BooX Viewer是Momotalo、ShunCox、dd321等合作開發的一款輕量、綠色PDG瀏覽器,無需安裝,單獨一個EXE文件即可運行,並且能夠直接讀取ZIP文件中的PDG文件等,這些都比原版超星瀏覽器強,也導致了它的流行。
早期版本的BooX Viewer提供一個“轉換到DjVu”功能,該功能先將PDG文件轉換成BMP,再轉換成DjVu文件。因此也有人利用此功能的前半部分,先將PDG文件轉換成BMP,再將BMP轉換成PDF。不過這個功能在后來的版本中已經取消了,並且加了一些類似廣告的限制。
BooX Viewer的開發基於對PDG文件格式的分析,不需要超星瀏覽器或DLL的支持,並且能夠解碼加密的10H等格式,這些都讓我對其開發者充滿了敬意。
五、pdg2bmp&jpg&tif&pdf&txt
這個軟件是coolman開發的,對PDG的支持(包括OCR)基於超星Pdg2控件,對圖像、PDF的支持基於Pegasus ImagXpress Professional控件,運行前需要先注冊控件。
這個軟件的發行范圍很窄,最新版是多少我也不知道,只能以我手上現有的3.8b0419版來說事。在使用這個版本的過程中,我發現它存在下列限制:
- 直接將PDG轉換成PDF,則所有彩色、灰度圖像均變成黑白圖像。解決的辦法是先轉換成BMP,再用其它軟件將BMP轉換成PDF。 但是不知道為什么,pdg2bmp&jpg&tif&pdf&txt沒有文件重新編號功能,所以在從BMP轉換成PDF時,頁面順序調整起來很麻煩。
- 將PDG轉換成BMP等圖像格式時,允許使用多線程並行轉換,但是似乎穩定性會隨之下降,所以我都只敢用單線程轉換。
- 最要命的一點就是:這個軟件在轉換時需要占用系統剪貼板,因此如果在轉換過程中同時用Office等軟件干活(沒辦法,轉換過程實在是太漫長了),則復制/粘貼功能將失效。我先是在工作時發現了這個問題,然后用剪貼板監視軟件證實了我的猜測。對剪貼板的占用不僅影響前台軟件的正常使用,而且由於Windows本身對系統剪貼板的限制,在轉換 幅面很大的PDG文件時會轉不了。
雖然有一些問題,但是這個軟件支持加密的AAH格式等(除該軟件外,coolman還開發了一些獨立運行的PDG解密軟件),這些都讓我對coolman及其作品充滿敬意。
六、Pdg2Pic
在發現coolman的pdg2bmp&jpg&tif&pdf&txt會占用系統剪貼板后,我google了一下,還真查到了一段源代碼,雖然我不可能看到pdg2bmp&jpg&tif&pdf&txt的源代碼,但我相信它的核心應該與這段代碼相似。不過在多看了兩遍這段代碼后,我覺得既然已經用了Pdg2控件,為什么不用它提供的其它接口獲取圖像,干嘛非要用系統剪貼板?為了證實我的想法的可行性,我花了點時間寫了Pdg2Pic這個軟件,順便對我在使用pdg2bmp&jpg&tif&pdf&txt過程中發現的一些問題做了改進,包括:
- 轉換過程不占用系統剪貼板,不影響用戶在前台的正常工作。
- 可以自動將文件按封面、前言、目錄、正文、附錄的順序排列,也可以手動調整文件順序。
- 提供預覽功能,在轉換前可以先瀏覽PDG圖像。
- PDG文件的掃描DPI自動轉存入生成的TIFF、PNG文件,便於在轉換成PDF文件時設置頁面大小。
- 如果檢查發現PDG文件是純正的JPG文件,將不進行任何轉換,直接將PDG復制為JPG;黑白PDG文件轉存為采用CCITT G4壓縮的TIFF文件,以獲取高壓縮比;灰度/彩色PDG重新壓縮為有損的JPG或采用JPEG壓縮的TIFF文件,或無損壓縮的PNG文件,或JPEG 2000(有損/無損)。
由於我沒有時間對加密PDG文件進行研究,因此Pdg2Pic不像pdg2bmp&jpg&tif&pdf&txt那樣支持眾多加密PDG格式。如果在Pdg2Pic統計的文件類型中出現加密格式,需要用1xhkillerfull、aahkiller等進行解密,然后再用Pdg2Pic進行轉換。如果您 願意提供PDG文件解密算法或代碼,歡迎與我聯系。
七、方法之比較與展望
上面介紹了一些PDG轉圖像、PDF的方法,說句實在話,我認為沒有一種方法是完美的,多多少少都有點毛病。而且在我看來,對於一個真正的PDG轉PDF軟件,至少還要解決以下問題:
- 從PDG目錄到PDF書簽(Bookmark)的轉換。現在有些PDG圖書是帶目錄的,在超星瀏覽器中打開后,左側會顯示樹狀結構的目錄,便於快速定位需要閱讀的頁面。這個與PDF中的書簽很類似,但是現在似乎還沒有一個軟件能夠在將PDG轉換成PDF時,順手將目錄轉換成書簽。
- 將圖書信息(bookinfo.dat)插入PDF文件,便於用Adobe PDF Reader的搜索(search)功能,在一大堆PDF文件中找到需要的書。bookinfo.dat其實是一個標准INI文件,用文本記錄了書籍的書名、作者等信息,如果作為一個文本頁插入PDF文件尾,無疑將給搜索提供一些必要的信息。
- 支持透明背景。原始的黑白PDG文件本身可以按透明背景色顯示,因此在超星瀏覽器中可以根據需要對背景色、前景色進行設置,便於長時間觀看。相比之下,PDF的白底黑字看起來就累多了。其實PDF Reader本身是支持對頁面背景進行定義的,條件是PDF中的圖像必須采用透明背景。如果圖像本身敲死了一定要用白底,PDF Reader也沒有辦法。
現在最后一個問題可以通過FreePic2Pdf 1.01版解決,第二個問題可以通過超星章節目錄提取器(SSContent)部分解決,其它問題解決起來都有點難度,不知道有多少人願意去做?至少我自己是沒打算要去做,但是我很期待看到其他高手能夠解決這些問題,推出更好的PDG轉PDF工具。
八:題外話:圖像轉PDF
本文的題目叫《PDG轉圖像、PDF的若干方法》,但是前面討論的某些方法,如截圖法只能得到圖像,不能直接得到PDF文件,因此自然還需要討論一個問題:怎樣將圖像轉換成PDF文件?
別人怎么想的我不知道,我自己認為比較好的轉換方法有兩種:
1、用Adobe Acrobat Professional的Create PDF from Multiple Files,而不用它的虛擬打印機
這種方法的優點是:
- 如果在轉換前先指定黑白圖像用無損JBIG2壓縮,可以獲取最高壓縮比。
- 可以獲得經過線性優化的PDF文件,這種文件在通過網絡瀏覽時可以邊瀏覽邊下載,因此也被稱為Fast Web View文件。但是對於只在本地閱讀的PDF文件來說,我認為這種優化只會增加文件長度,不會節省實際的打開時間。
這種方法的缺點是:
- 對於灰度/彩色圖像,可能會因為重新采樣壓縮而造成圖像質量衰減或文件膨脹。這方面的討論參見我寫的《圖像轉PDF的問題、方法及題外話》。
- 如果一次需要處理幾本書,操作起來有點麻煩。
- 如果圖像大小不一,轉換出來的頁面大小也不一致,看起來有點心煩。
- 至今為止,我還沒有找到如何設置,才能在轉換黑白圖像時,能夠將背景設置為透明。如果您知道,還請不吝賜教。
2、用FreePic2Pdf
這種方法的優點是:
- 按照缺省設置,黑白圖像轉換成CCITT G4數據流,JPEG/JPEG 2000數據流直接嵌入PDF文件,不會因為重新采樣壓縮而造成圖像質量衰減或文件膨脹。
- 便於批量處理,包括設置頁面大小、頁邊距,在開始轉換前調整文件順序也很方便。
- 從1.01版開始,對於黑白圖像,可以自動轉換成透明背景色。由於有了這個功能,我甚至打算在有了好的PDF轉圖像軟件后,把以前收集的一些掃描版PDF還原成圖像,再用它轉成PDF。原因無它, 白底黑字的PDF實在是看怕了。
- 最重要的一點:它是免費的綠色軟件,個人使用不存在法律后患。
這種方法的缺點是:
- 由於缺乏相關開源項目的支持,因此不支持JBIG2壓縮,只能采用CCITT G4壓縮黑白圖像,轉出來的PDF文件可能會比Acrobat用JBIG2轉出來的大一點。如果您手上有沒有法律問題的JBIG2壓縮源代碼,歡迎與我聯系。
- 沒有線性優化功能。如果您制作的PDF只在本地閱讀,不打算通過IE在線閱讀,這個缺點將變成優點。
總之,現在也沒有十全十美的圖像轉PDF軟件,也許這樣的方法會是更好的選擇:轉換還是用支持JBIG2和JPEG 2000的Acrobat轉,但是做一個小程序,將它轉出來的PDF文件的黑白圖像的背景改為透明。由於是單純的字符替換,所以軟件很好寫,並且不需要其它第三方代碼或控件的支持。