如果 PDF 立即開啟並在螢幕上完美顯示每個頁面,但在傳送到實體印表機時會產生亂碼、缺少字母、重疊符號或完全空白區域的頁面,則表示螢幕渲染管道和列印渲染管道之間存在字體渲染不匹配的問題。整個文件結構完好無損。內容流有效且可解析。螢幕上的檢視器可以正確定位並繪製每個字形。然而,印表機忠實地呈現相同文字所需的資訊要么在文件中不存在,要么存在但內部不一致,要么與印表機的字體處理子系統不相容。解決特定字體嵌入和字體描述符層問題的有針對性的修復 PDF 方法可以可靠地解決此症狀的最常見原因,通常不需要從原始來源文件重建文件。
這個問題令人沮喪,因為在螢幕上的整個編輯和審閱過程中,文件顯示得非常好。作者看到正確的文本並假設該文件已準備好分發。只有收件人或作者在最後一刻列印會議或提交的硬拷貝時,才會發現列印輸出難以辨認。螢幕和列印的差異不是隨機的。它遵循一組可預測的原因,這些原因植根於 PDF 格式處理字體資料的方式,並且每個原因都有相應的解決方案。

為什麼 PDF 可以在螢幕上正確顯示但列印時失敗
PDF 消費者應用程式內的螢幕渲染引擎和列印渲染引擎使用兩種不同的字體解析度路徑。當原始嵌入字體損壞、遺失或僅部分嵌入時,螢幕渲染器可以優雅地回退到替代系統字體。它可以足夠接近地近似字形形狀和字元寬度,使得文字在中低解析度顯示器上看起來可以接受。印表機,特別是本地解釋頁面描述語言的 PostScript 印表機,需要原始的完全嵌入的字體子集及其完整的字形資料和字體描述符度量,或者緊密的系統字體匹配以及精確定義的字體描述符表,包括字元寬度數組、字體邊界框、大寫高度、字幹寬度和字距調整對。
PDF規範定義了三種不同的字體處理策略(Adobe,“PDF Reference 1.7”,2006)。完全嵌入的字體包括 PDF 文件中的整個字體程式二進位。嵌入字型子集僅包括文件中實際使用的特定字符,由其 Unicode 代碼點標識。引用的字體根本不包含字體資料;它們透過 BaseFont 名稱來命名標準系統字體,並依賴檢視器或印表機在顯示或列印時提供相符的字體。迄今為止,引用字體是螢幕與列印文字不符的最常見來源,因為印表機安裝的字體集幾乎總是與檢視器的字體集至少在某些字體上有所不同。
嘗試修復 PDF
無需安裝。直接在您的瀏覽器中工作。
檢查哪些字體被嵌入以及哪些字體僅被引用
第一個診斷步驟是在任何可以報告文件中使用的每種字體的嵌入狀態的檢視器中開啟 PDF。在 Adobe Acrobat Reader 或 Acrobat Pro 中,前往“檔案”、“屬性”,然後按一下“字型”標籤。此選項卡列出了文件中任何位置出現的每種字型。每個字體名稱旁邊顯示嵌入狀態。列出狀態為「嵌入」的字體。其完整的字形程式儲存在 PDF 中。 「嵌入子集」意味著僅存在文件文字中使用的特定字符,這對於大多數文件來說是正常且足夠的。列出的字體沒有任何嵌入指示符,僅顯示字體名稱和類型,例如“Type 1”。或“TrueType”,是根本沒有嵌入資料的引用字型。
如果「字體」標籤顯示一種或多種引用的字體,則這些字體是列印亂碼的主要嫌疑人。 修復 PDF 或印前檢查工具可以找到匹配的系統字體,僅提取文件中使用的字元所需的字形形狀,並將這些字形作為新的字體子集嵌入到 PDF 中,從而解決了列印問題。嵌入的子集為印表機提供了它所需的每個字形,消除了對印表機自己的字體集合的依賴。
將文件列印為圖像以繞過所有字體處理
當字型資料確實遺失或損壞且嵌入或修復都無法立即可行時,將 PDF 作為光柵影像序列列印會完全繞過印表機的字型子系統。在 Adobe Acrobat Reader 的「列印」對話方塊中,按一下「進階」按鈕並選取標有「列印為影像」的選項。此設定指示 Acrobat 在內部將每個頁面渲染為高解析度點陣圖,然後僅將點陣圖資料傳輸到印表機,而不是發送原始向量繪圖命令和文字放置操作符。列印輸出將完全清晰,但由於光柵化步驟,小點尺寸的文字(例如腳註、軸標籤或細則印刷)可能會在字元邊緣顯示輕微的軟化。
下表總結了不同「列印為影像」解析度設定的權衡:
| 分辨率設定 | 輸出文本質量 | 每頁大約線軸尺寸 | 最適合 |
|---|---|---|---|
| 300 分辨率 | 整體良好,8 點以下的襯線可見輕微軟化 | 一封信頁面大約 8 MB | 標準辦公文件、內部報告、草稿 |
| 600 分辨率 | 非常好,與真正的向量文字幾乎沒有區別 | 一封信頁大約 30 MB | 合約、法律文件、帶有腳註或小文本的文件 |
| 1200 分辨率 | 與原始向量輸出無法區分 | 一封信頁大約 120 MB | 專業列印校樣、檔案品質的保存副本 |
將 PDF 轉換為具有永久光柵化字體的扁平化版本
若要進行永久性修復,產生可在任何印表機、任何作業系統和任何 PDF 檢視器上進行相同列印的獨立文檔,請將整個 PDF 轉換為所有文字均已以高解析度光柵化的版本。這會產生一個新的 PDF 文件,其中每個頁面都儲存為高解析度圖像,並且輸出中不存在任何類型的字體依賴性。代價是文字變得不可搜尋和不可選擇,並且與原始基於向量的文件相比,文件大小增加。
Ghostscript 是一款免費的命令列 PDF 處理器,可有效率地執行此轉換。命令“gs -o output.pdf -sDEVICE=pdfwrite -dPDFSETTINGS=/printer -dEmbedAllFonts=true -dSubsetFonts=true input.pdf”使用印表機預設,它會光柵化文本,同時保持 300 DPI 的圖像品質。為了獲得更高的保真度,印前預設為彩色和灰階影像保持 300 DPI,並將文字保留為向量資料(其中字體資料有效)。如果已知字體資料已損壞,請將標誌「-dNoOutputFonts」新增至 Ghostscript 命令中,以強製完成文字光柵化,無論字體有效性如何。
使用 PDF 印前檢查工具修復損壞的字型表
當字體的內部度量表損壞而不是遺失時,預檢修復工具可以修復這些表,而無需光柵化文字。字型程式包含多個內部資料表。 「cmap」是指表將 Unicode 字元代碼對應到字型內的字形索引。損壞的 cmap 表會導致印表機為給定的字元代碼選擇並繪製錯誤的字形形狀,從而產生看似隨機的亂碼。 「hmtx」指「hmtx」。表存儲水平度量,包括每個字形的前進寬度。損壞的 hmtx 表會導致字元重疊、衝突或間隔不規則。印前檢查工具可以檢測兩個表中的損壞,並從嵌入字體資料的有效部分重建它們,或者替換匹配的系統字體並從替換中重新產生乾淨的表。
Adobe Acrobat Pro 中「PDF 修復」下的專業印前檢查模組類別和callas pdfToolbox中提供一鍵字型表修復操作。 WukongPDF 的修復 PDF 工具包括自動字體診斷,可在單一分析過程中偵測嵌入遺失、cmap 損壞和 hmtx 不一致。基於瀏覽器的修復服務越來越多地將字體子集重建作為其標準自動修復管道的一部分,從而無需桌面軟體或命令列專業知識即可進行字體表修復。
在多種印表機類型和驅動程式上測試修復後的輸出
在使用標準 PCL 驅動程式的家用噴墨印表機上正確列印的 PDF 可能在使用 PostScript 驅動程式的辦公室雷射印表機或使用專有光柵影像處理器的生產數位印刷機上仍會產生亂碼文字。不同的印表機類型對非標準或稍微畸形的字體表具有不同程度的容差來解釋字體資料。 PostScript 印表機往往比 PCL 印表機對字體一致性更嚴格,並且會拒絕或誤渲染 PCL 驅動程式透過取代默默接受的字體。
完成修復後,在文件可能遇到的每種印表機類型上列印一張測試頁。如果文件必須在各種未知印表機型號上可靠地列印,例如收件人將在自己的辦公室或家庭印表機上列印的表格,則基於影像的列印或完全光柵化方法是更安全且更普遍相容的選擇。文字清晰度的輕微折衷被每個收件人都將看到清晰的輸出(無論其印表機硬體如何)的確定性所抵消。
當 PDF 開啟並在螢幕上正確顯示,但在列印時產生亂碼、遺失或不可讀的文字時,原因幾乎總是根源於文件的字體處理層。首先在文檔屬性中檢查字體嵌入狀態。如果存在引用的字體,請使用印前檢查或修復工具將它們嵌入為子集。列印為圖像提供了一種完全繞過字體處理的直接解決方法。轉換為帶有光柵化文字的永久扁平 PDF 會產生一個可移植、面向未來的文件,該文件將在任何地方進行相同的列印。在結構層級修復損壞的字體表可以保留文字的可搜尋性並保持較小的檔案大小。快速診斷檢查和與特定字體問題相符的有針對性的修復相結合,可將列印輸出還原為您在螢幕上看到的內容。
嘗試修復 PDF
無需安裝。直接在您的瀏覽器中工作。
