Others

為什麼PDF在不同作業系統上開啟時會顯示亂碼

您在 Windows 筆記型電腦上開啟 PDF,一切看起來都很完美。您將其發送給使用 Mac 的同事,他們會看到散佈在整個文件中的隨機符號、方框或問號。在 Linux 電腦上,相同檔案可能會在文字應顯示的位置顯示空格。這種令人沮喪的經歷比大多數人意識到的更頻繁,而且幾乎總是歸結為不同的作業系統如何處理 PDF 文件中嵌入的字體。

核心問題很簡單:PDF 被設計為在任何地方看起來都一樣,但這項承諾取決於嵌入在文件中或在打開它的系統上可用的字體。當 PDF 依賴創建者電腦上安裝的字體但文件本身不包含這些字體時,任何缺少這些相同字體的裝置都會用其他字體替換。在不同的作業系統上,即使是常見的字體也有不同的名稱或版本,這種替換可能會產生亂碼、不可讀的輸出。

Why Does a PDF Display Garbled Characters When Opened on a Different Operating System

最常見的罪魁禍首:字體遺失或未嵌入

當有人從 Word 文件、Google Doc 或 InDesign 等設計應用程式建立 PDF 時,軟體會決定是將字體直接嵌入到 PDF 中還是簡單地引用它們。字體嵌入意味著實際的字體資料被打包在 PDF 文件中。字體引用僅記錄使用的字體並期望閱讀設備安裝它。

Windows 上的 Microsoft Word 通常使用 Calibri、Cambria 或 Times New Roman 等字型。當 PDF 建立者選擇不嵌入字體(通常是為了保持較小的檔案大小)時,PDF 僅儲存字體名稱,而不儲存實際的字元形狀。打開該檔案的 Mac 會查找 Calibri,但會發現不同版本的 Calibri 或根本找不到匹配項。然後,Mac PDF 檢視器會退回到替代字體,原始字體和替代字體之間的字元映射很少能完美對齊。

PDF 協會 2024 年的一項分析發現,與字體相關的問題約佔所有跨平台 PDF 渲染問題的 40%(PDF 協會,“PDF 渲染錯誤調查”,2024 年)。字體替換失敗對於西里爾文、CJK(中文、日文、韓文)、阿拉伯文和希伯來文等非拉丁文字尤其常見,其中替換字體可能完全缺少所需的字元集。

這也是您可能會在使用自訂或授權字體的文件中看到PDF字體問題的原因。設計應用程式通常使用非自由分發的高級字體。如果設計者忘記嵌入它們或字體授權禁止嵌入,則任何在未安裝特定字體的情況下開啟 PDF 的人都會看到亂碼文字。

在不同作業系統上查看同一份文件可能看起來完全不同。在創建它的 Windows 電腦上正確呈現的 PDF 可能會在 Mac 或 Linux 系統上顯示 tofu(當字體缺少特定字元時出現的空矩形框的暱稱)。這種不一致在 PDF 建立階段是完全可以避免的。

WukongPDF

嘗試修復 PDF

無需安裝。直接在您的瀏覽器中工作。

立即開始 →

Windows、macOS 和 Linux 之間的字元編碼衝突

使用基於瀏覽器的 PDF 工具也意味著您無需安裝或更新軟體。該工具在遠端伺服器上運行,並透過瀏覽器提供結果,因此您始終可以存取最新版本,而無需下載。當您需要在沒有管理員權限安裝程式的裝置上快速處理檔案時,這尤其方便。

除了缺少字體之外,字元編碼是 PDF 在不同平台上顯示不同的第二個主要原因。字元編碼是將數字代碼對應到特定字元形狀的系統。建立 PDF 時,文件中的每個字元都會根據來源應用程式使用的編碼指派一個代碼。在不同作業系統上查看PDF可能會誤解這些代碼。

Windows 應用程式歷史上使用舊代碼頁,例如用於西歐語言的 Windows-1252 或用於日文的 Shift-JIS。 Mac 應用程式傾向於使用基於 Unicode 的編碼。 Linux系統預設使用UTF-8。當在 Windows 上使用特定於 Windows 的編碼建立的 PDF 在以不同方式解釋相同數字代碼的系統上開啟時,結果是 mojibake,該術語表示由於不正確的字元編碼而導致的亂碼文字。

這個問題最常出現在特殊字元上:智慧引號、重音符號、貨幣符號和數學符號。使用歐洲語言建立的 PDF,如果使用 é、ö 或 ñ 等重音字符,則在使用不同預設編碼的系統上開啟時,這些字符可能會顯示為亂序符號。 PDF 規範確實包含在文件中明確定義字元編碼的機制,但並非所有 PDF 創建軟體都能正確或一致地實現這些機制。

亞洲語言的 PDF 尤其容易受到攻擊。在使用舊編碼的系統上建立的包含中文、日文或韓文文字的文件可能未嵌入必要的字元對應。在不同的作業系統上開啟這樣的檔案可能會產生完整的亂碼,而不僅僅是一些亂碼。對於處理多語言文件的組織來說,編碼問題代表著真正的業務風險,可能會影響合約、法律備案和客戶通訊。

字型表損壞和 PDF 結構損壞

字體問題並不總是由丟失文件引起的。有時,字體資料存在於 PDF 中,但已損壞。 PDF 將字體資訊儲存在稱為字體表的結構中,該結構將字元代碼對應到字形描述。如果這些表在文件傳輸、下載不完整或磁碟錯誤期間被損壞,則讀取器應用程式無法正確解釋字體數據,即使它在技術上是嵌入的。

部分腐敗可能會產生一些最令人困惑的結果。您可能會在大多數頁面上看到正確的文本,但在特定頁面上看到亂碼,或在標題中正確顯示字母但在正文中顯示失敗。出現這些模式是因為 PDF 的不同部分引用了不同的字體子集,並且只有其中一些子集被損壞。

當您發現同一文件上週顯示正常但今天顯示亂碼時,通常需要採用修復 PDF方法。這種隨時間變化的模式幾乎總是指向資料損壞而不是字體替換問題。文件損壞可能發生在電子郵件傳輸、雲端同步過程中,甚至在儲存裝置開始故障時。

透過多個系統的 PDF 面臨更高的風險。每次郵件伺服器、雲端儲存服務或檔案壓縮工具處理檔案時,資料損壞的可能性很小。經過多次轉會,這種風險會變得更加複雜。從 Windows 桌面經過電子郵件伺服器、垃圾郵件過濾器,最後到達 Mac 郵件用戶端的 PDF 可能會在任何這些步驟中出現損壞,而字體表是 PDF 中最複雜的部分之一,通常是最先顯示損壞的結構。

非標準字型格式和舊版 PDF 版本

自 1993 年推出以來,PDF 格式已經發生了顯著的發展。較舊的 PDF 檔案可能使用現代檢視器不再完全支援的字體格式。 Type 1 (PostScript) 字體是早期 PDF 的標準字體,但 Adobe 在 2021 年開始棄用它們,並於 2023 年完成逐步淘汰(Adobe,“PostScript Type 1 Font End of Support”,2023)。在目前版本的 Adobe Acrobat 或基於瀏覽器的現代檢視器中開啟包含 Type 1 字型的 PDF 可能會觸發字型回退,從而產生亂碼輸出。

同樣,一些 PDF 創建者以專有或壓縮格式嵌入字體,只有他們自己的軟體才能完全解碼。由舊版 AutoCAD 產生的 PDF 可能使用 SHX 字體,這些字體本質上是形狀檔案而不是標準字體格式。大多數通用 PDF 檢視器無法正確呈現這些內容,且不同作業系統上的結果是可以預測的:隨機符號、未對齊的字元或空格。

自訂編碼字體提出了另一個挑戰。一些 PDF 建立工具即時建立自訂字元編碼,將文件中使用的字形對應到字型表中的任意位置。如果 PDF 閱讀器無法正確解析此自訂編碼,則會顯示錯誤的字形。文字可能看起來仍然像真實的單詞,但字母被交換或替換,這有時比明顯的垃圾更糟糕,因為讀者可能不會立即意識到內容是錯誤的。

如何修復 PDF 中的亂碼

當您遇到亂碼 PDF 時,有多種方法可以恢復可讀文字。最快的修復通常是從原始來源文件重新建立 PDF。開啟原始 Word 文件、Google Doc 或設計文件,然後將其重新匯出為 PDF,並明確啟用字體嵌入。在 Microsoft Word 中,此設定位於「檔案」、「選項」、「儲存」下,然後選取「在檔案中嵌入字體」。在 Google 文件中,下載為 PDF 選項始終會嵌入字型。在 Adobe InDesign 或 Illustrator 中,字體嵌入是在「進階」面板下的匯出設定中控制的。

如果原始來源文件不可用,WukongPDF 可以透過其基於瀏覽器的引擎重新處理該文件,該引擎可以規範字體資料並解決編碼衝突,無論用於查看輸出的作業系統為何。專用的修復 PDF工具還可以透過解析 PDF 內部字體表並嘗試重建它們或將現有字元代碼對應到標準 Unicode 值來提供協助。

將 PDF 列印為新的 PDF 是另一種實用的解決方法。大多數作業系統都包含“列印為 PDF”選項。或「另存為 PDF」列印對話方塊中的選項。當您將亂碼 PDF 列印到新 PDF 時,系統列印管道會將每個頁面呈現為類似圖像的表示形式,然後將其寫入新的乾淨 PDF 檔案。此過程完全去除有問題的字體引用並僅嵌入視覺表示。代價是新的 PDF 將不具有可選擇或可搜尋的文本,因為字元被呈現為圖形元素。

對於存在編碼問題而不是缺少字體的 PDF,將文件轉換為中間格式可以重置字元對應。某些工具可以從 PDF 中提取原始文本,並將其寫入具有正確 Unicode 編碼的新文件中。此方法對於顯示因編碼不匹配而導致的拉丁文字亂碼的文檔效果很好,但對於自訂或專有字體編碼可能沒有幫助。在這些情況下,列印到 PDF 的方法更為可靠。

建立跨平台使用的 PDF 時防止字體問題

預防比修復容易得多。如果您定期建立將在不同作業系統之間共用的 PDF,一些習慣可以消除幾乎所有與字體相關的顯示問題。

首先,匯出為 PDF 時始終嵌入字體。每個主要的文件和設計應用程式都提供此選項,儘管它可能被稱為不同的東西:“嵌入字體”,“嵌入字體”,“嵌入字體”,“嵌入字體”,“嵌入字體”,“嵌入字體”,“嵌入字體”,“嵌入字體”,“嵌入字體”,“嵌入字體”,“嵌入字體”等。 “包括字體,”或“字體子集”。字體子集僅嵌入文件中實際使用的字符,而不是整個字體文件,這使得 PDF 大小易於管理,同時仍提供所有需要的字符資料。文件大小的輕微增加只是為了確保跨平台可讀性而付出的很小的代價。

其次,如果由於許可原因無法嵌入,請堅持使用標準或廣泛使用的字體。原始 PDF 規格中定義的 14 種標準 Type 1 字型(包括 Times、Helvetica、Courier 和 Symbol)保證在每個 PDF 閱讀器上可用,無論作業系統為何。跨平台安全的現代等效字體包括 Arial、Times New Roman 和 Google Noto 字體系列,該系列涵蓋 1,000 多種語言,並且可自由重新分發。

第三,在廣泛分發之前,至少在一種其他作業系統上測試您的 PDF。在執行與建立檔案所用作業系統不同的作業系統的裝置上開啟該檔案。不僅檢查第一頁,還檢查整個文件的幾頁,並特別注意任何特殊字元、重音字母或非拉丁文本。五分鐘的測試可以避免收件人數小時的困惑。

第四,創建後驗證PDF屬性。大多數 PDF 檢視器可以顯示文件中使用的字體列表,並指示是否嵌入每種字體。在 Adobe Acrobat 中,它位於「檔案」、「屬性」、「字型」下。在基於瀏覽器的檢視器中,通常可以透過文件屬性或檢查器工具存取字型清單。如果您看到列出的字體帶有“(嵌入)”在它們旁邊,文件應該跨平台正確顯示。

最後,考慮對需要長期跨平台可靠性的文件使用 PDF/A 格式。 PDF/A 是 PDF 的 ISO 標準化版本,它強制要求字體嵌入並禁止可能導致渲染不一致的功能。它是專門為歸檔用例而設計的,在這些用例中,無論作業系統和字體技術如何發展,文件都必須在未來幾十年內保持可讀性。

WukongPDF

嘗試修復 PDF

無需安裝。直接在您的瀏覽器中工作。

立即開始 →