作者:馬健 事先聲明:
對(duì)于標(biāo)題所提問(wèn)題,,我的回答是:大多數(shù)情況下轉(zhuǎn)換后文件長(zhǎng)度應(yīng)該相當(dāng),,略有增加或減少,質(zhì)量應(yīng)該保持不變,。如果文件長(zhǎng)度,、畫(huà)面質(zhì)量差很多,多半是用錯(cuò)了方法或軟件,。本文將說(shuō)明理由,。 注意在上面的回答中我使用了“大多數(shù)”等表示概率的詞匯,因此在討論答案之前,,需要先對(duì)PDG文件格式進(jìn)行分類(lèi),,并估計(jì)每種PDG文件出現(xiàn)的可能性。 目前比較流行的分類(lèi)方法是按照PDG文件第16字節(jié)分類(lèi),,通常PDG文件格式檢查軟件都是按照這個(gè)字節(jié)的16進(jìn)制報(bào)告文件類(lèi)型,,如00H、02H,、03H,、04H、05H,、10H,、11H、AAH,、ACH,、64H、66H等等,。由于這種分類(lèi)法分出來(lái)的類(lèi)型較多(理論上有256種),,所以通常也按字節(jié)高4位進(jìn)行歸類(lèi),簡(jiǎn)稱(chēng)0xH,、1xH,、AxH、6xH等,。 這種分類(lèi)方法可以表示出PDG文件的加密特征:
但是加密方法畢竟是超星自己的事,,用這種分類(lèi)方法往PDF格式上套未免有點(diǎn)難,。所以我更愿意用另一種分類(lèi)標(biāo)準(zhǔn):超星瀏覽器自帶的Pdg2控件的GetImageType方法的返回值。這個(gè)方法通常返回1,、2,、3,在Pdg2Pic中分別用T1,、T2,、T3表示,即Type1,、Type2,、Typ3的意思,分別對(duì)應(yīng)三種圖像:
從出現(xiàn)的概率來(lái)說(shuō),,這三種格式按從高到低排列依次是T1,、T3、T2:
在轉(zhuǎn)換成PDF時(shí),,正常情況下這三種格式與PDF中壓縮算法的對(duì)應(yīng)關(guān)系為:
如果T1原始圖像是CCITT G4,,轉(zhuǎn)換成PDF的CCITT G4后文件尺寸會(huì)略有膨脹,因?yàn)镻DF文件本身要增加一些必要的格式信息,;如果轉(zhuǎn)換成PDF的JBig2,,通常文件尺寸不會(huì)增加,只會(huì)減少,畢竟JBig2的壓縮算法要比CCITT G4更先進(jìn),。 如果T1原始圖像是DjVu,,轉(zhuǎn)換成PDF的CCITT G4后文件無(wú)疑將會(huì)膨脹;轉(zhuǎn)換成JBig2則取決于是有損JBig2還是無(wú)損JBig2,。理論上說(shuō),,DjVu對(duì)黑白圖像的壓縮能力與JBig2相當(dāng),但由于超星用的全是有損DjVu,,因此轉(zhuǎn)換成PDF時(shí)只有選有損JBig2才能保持二者尺寸 大致相當(dāng),,選無(wú)損JBig2則會(huì)造成文件膨脹。由于有損壓縮會(huì)對(duì)漢字筆劃造成損傷,,因此我寧愿文件長(zhǎng)度膨脹,,也不愿選擇有損。 如果T2原始格式是JPG,,轉(zhuǎn)換結(jié)果取決于轉(zhuǎn)換軟件:如果轉(zhuǎn)換軟件能夠直接從PDG文件中提取原始JPG數(shù)據(jù)流嵌入PDF,,則PDF文件只會(huì)略有膨脹 ,,質(zhì)量不變,;如果轉(zhuǎn)換軟件非要把PDG先解碼成BMP再壓縮成JPG或JPEG 2000放到PDF里,文件長(zhǎng)度可能增加也可能減小,,取決于所選的壓縮比,,但是在缺省的壓縮比下,質(zhì)量下降是注定了的,。 如果T2原始格式是DjVu,,用于目前的PDF規(guī)范不支持DjVu(不排除將來(lái)會(huì)支持),因此只能將DjVu先解碼成BMP再壓縮成JPG或JPEG 2000放到PDF里,,文件長(zhǎng)度可能增加也可能減小,,質(zhì)量多半會(huì)下降。 對(duì)于T3,,如果轉(zhuǎn)換軟件能夠直接從PDG文件中提取原始JPG數(shù)據(jù)流嵌入PDF文件,,并且用無(wú)損JBig2壓縮原CCITT G4圖像,則PDF文件尺寸會(huì)減小,,同時(shí)質(zhì)量不變,;如果轉(zhuǎn)換軟件非要把多層合并成一層,再壓縮成JPG或JPEG 2000放到PDF里,,通常文件長(zhǎng)度會(huì)增加,,質(zhì)量會(huì)下降:JPG或JPEG 2000都不適合壓縮文字圖像。 綜上所述,,從原理上說(shuō),,對(duì)于最常見(jiàn)的黑白PDG,轉(zhuǎn)換成PDF后應(yīng)該長(zhǎng)度略有減少,質(zhì)量保持不變,;對(duì)于帶插圖的多層PDG,,轉(zhuǎn)換成PDF后應(yīng)該長(zhǎng)度略有減少,質(zhì)量保持不變,;對(duì)于純圖像頁(yè)面的PDG,,轉(zhuǎn)換后長(zhǎng)度可能略有增加而質(zhì)量不變,也可能長(zhǎng)度,、質(zhì)量都有較大變化,,但是這種頁(yè)面畢竟不多。 現(xiàn)在各位明白我在本文開(kāi)始部分給出的回答的含義了吧,? 在明白的同時(shí),,我相信也會(huì)有人合理地引伸出另外一個(gè)問(wèn)題:為什么現(xiàn)在大家看到從PDG轉(zhuǎn)出來(lái)的PDF,會(huì)和原始PDG差那么多,? 我認(rèn)為這方面最大的罪魁禍?zhǔn)拙褪菑V為流傳的“打印大法”:將PDG文件直接從超星瀏覽器打印到虛擬PDF打印機(jī),。這種方法的制約因素我已經(jīng)在《PDG轉(zhuǎn)圖像、PDF的若干方法》一文中加以說(shuō)明,,對(duì)轉(zhuǎn)換出來(lái)的PDF舉行分析所需的工具和方法,,也在《圖像轉(zhuǎn)PDF的問(wèn)題、方法及題外話(huà)》一文中詳細(xì)說(shuō)明,,喜歡較真的人不妨自己驗(yàn)證,,這里我只說(shuō)我的結(jié)論:只要用打印的方法,不論如何破解,、如何發(fā)現(xiàn)新的突破方法,,打出來(lái)的PDF文件膨脹、質(zhì)量下降那是注定了的,,想改都難,,更何況還會(huì)受到軟件方面的種種限制 ,所以奉勸各位還是趁早放棄,。 另外一種所謂“利用中間BMP”的轉(zhuǎn)換方法也會(huì)產(chǎn)生問(wèn)題:有人先用BooX Viewer或其它軟件將PDG轉(zhuǎn)換成BMP,,再用Acrobat或其它軟件將BMP轉(zhuǎn)換成PDF。這種方法只能將T1圖像無(wú)損轉(zhuǎn)換成PDF,;對(duì)于T2,、T3,由于很難將BMP圖像無(wú)損存入PDF(那樣尺寸膨脹太過(guò)厲害),,只能再壓縮成JPG或JPEG 2000后存入PDF,,因此質(zhì)量下降、尺寸膨脹等問(wèn)題是免不了的,。 那么什么樣的方法才是正確的轉(zhuǎn)換方法呢,? 我的回答是:條條大道通羅馬,,只要拋棄表層皮毛的束縛,直接深入到文件格式內(nèi)部,,就可以找到好的方法,。就我自己來(lái)說(shuō),最常用的組合是Pdg2Pic+FreePic2Pdf:
|
|
來(lái)自: Rivalry > 《計(jì)算機(jī)》