時間:2019-08-20 17:22:35 作者:johnnyl 瀏覽量:71
PDF 是我們打交道最多的文件格式之一。提到這個格式,即使是對技術(shù)并不熟悉的用戶,也能說出「通用性好」、「格式不會亂變」這些優(yōu)點。但同時,PDF 也是讓我們感到困惑最多的格式之一,因為與 Word 文檔等其他常見辦公軟件格式相比,PDF 似乎有著太多的「怪癖」,例如復(fù)制文字困難、幾乎沒法編輯等等。PDF 軟件數(shù)量繁多、質(zhì)量良莠不齊的現(xiàn)狀,也進一步讓很多用戶無法正確理解和使用 PDF。
然而,事實并非如此。這些問題大多不是 PDF 格式的「缺陷」,而是因為我們在觀念上把 PDF 當(dāng)成了和其他辦公文檔格式相近的東西,并因此期待 PDF 也具有和后者相似的功能和特征。
盡管 PDF 格式和 Word 格式在實際用途上有諸多重疊之處,但那只是表面現(xiàn)象。從技術(shù)角度看,兩種格式之間的差異要遠(yuǎn)遠(yuǎn)大于 Word 文檔和網(wǎng)頁之間的差異,甚至還要大于 Word 文檔和 Excel 表格之間的差異。
但這并不意味著 PDF 就是一種難以理解的格式。恰恰相反,對大多數(shù)用戶來說,PDF 可能是他們接觸到的格式中最「接地氣」、與現(xiàn)實生活最接近的。因為,PDF 與其說是一種數(shù)字文檔,不如說是實體文檔在數(shù)字世界中的影像。對 PDF 的操作,很大程度上可以看成對真實紙張的操作,只是操作環(huán)境從物理世界換到了數(shù)字世界而已。PDF 的創(chuàng)建就是一種虛擬的打印,復(fù)制 PDF 文字的過程更像是一種抄寫,而 PDF 的編輯實質(zhì)上是一種涂改。
一旦接受了這個觀念,PDF 的很多「怪癖」就顯得順理成章了:打印出來的東西當(dāng)然不會因為位置的變化而改變外觀;抄寫的結(jié)果很可能與原文存在誤差,并且受制于抄寫者對文字的理解;涂改的可行性則取決于原有布局留下了多少改動空間,并且再輕微的涂改也會對紙張造成損傷。
當(dāng)然,只給出這樣的結(jié)論并不足以令人信服。因此,下文的主要任務(wù)就是通過回答幾個關(guān)于 PDF 格式普遍關(guān)心的問題,結(jié)合 PDF 的結(jié)構(gòu)和語法,解釋為什么「PDF 的本質(zhì)就是數(shù)字化的紙張」,從而深化對 PDF 格式的理解。
為什么 PDF 的外觀非常穩(wěn)定?
在我們?nèi)粘J褂玫奈臋n格式中,PDF 文件的外觀是最穩(wěn)定的。一經(jīng)生成,無論在什么操作系統(tǒng)上、用什么軟件打開,得到的顯示效果幾乎總是一致的。相比之下,Word 所使用 docx 格式的保真性就差得多了:哪怕只是換臺電腦,顯示效果都可能發(fā)生了變化,更不要說用不同版本的 Word 或者第三方軟件打開了。
PDF 的這種保真性讓它廣受青睞,但它究竟是如何做到這一點的?PDF 的穩(wěn)定是絕對的嗎?
「打印」出來的 PDF
如果平時注意觀察,容易發(fā)現(xiàn)各種軟件中涉及 PDF 的操作,用詞都比較特別。其他格式都是被「新建」(new / create)出來或者「保存」(save)下來的,只有 PDF 是被「導(dǎo)出」(export)甚至「打印」(print)出來的。這些詞語并不是隨意選用的,它們本身就說明了 PDF 的重要特征:「導(dǎo)出」暗示著文件編輯已經(jīng)告一段落,而「打印」則更是形象地表明 PDF 的創(chuàng)建是一個「固化」的過程。
為了進一步理解這種區(qū)別,讓我們來對比一組外觀上完全相同的 Word 文檔和 PDF 文檔。下圖中,右側(cè)的 PDF 格式文件是由左側(cè)的 Word 文件導(dǎo)出得到的,兩者的內(nèi)容都只有「Hello world!」一行居中文字。(注:為了避免不必要的復(fù)雜性,我們暫時只以英文文檔為例。)
PDF數(shù)字界的紙張:科普向圖一
先來看 Word 是如何實現(xiàn)這一版式效果的。用任意解壓工具將該文檔解開(docx 文件 實質(zhì)上 就是一個壓縮包),找到其中的 /word/_rels/document.xml 并打開。其中的關(guān)鍵部分如下(代碼經(jīng)過整理):
PDF數(shù)字界的紙張:科普向圖二
不必恐懼這些陌生的代碼,它們的意義很容易從文檔內(nèi)容本身反推出來。先看倒數(shù)第二行,這里記錄了整個文檔最重要的信息——「Hello world!」這串文字。在它的上面一行,w:rFonts 屬性將字體設(shè)置為 Times。那么前四行是做什么的呢?從第二行的 center 字樣不難猜出,它們控制的是文字所在段落的樣式,包括居中對齊等等。
這就是 docx 格式這類 標(biāo)記語言 (Markup Language)文檔的特征:在純文本上包裹各種「標(biāo)簽」(tag)來描述文本的樣式(顏色、位置、字體等等),從而獲得格式豐富多變的文檔。常見的網(wǎng)頁(HTML)、Evernote 筆記( ENML )所用的語法本質(zhì)上都是標(biāo)記語言,區(qū)別只在于支持的標(biāo)簽各不相同、因此能實現(xiàn)的格式有多有少罷了。