2017-08-29 179 views
-2

我已經成功地使用iText庫生成PDF,但我遇到了一個奇怪的問題。當我在我自己的系統上下載PDF文件時,它看起來不錯;我會把它描述爲規則和正確的。但是,當我通過電子郵件將PDF文件發送給我的朋友時,它具有不同的佈局,我將其描述爲不規則。當我在網上掃描PDF時(沒有下載),它也看起來不規則。所以我想知道:我做錯了什麼,如果是的話,我該如何解決這個問題?使用iText創建的PDF在不同的系統上看起來不同

+1

它是如何不規則?除非您提供更多細節,否則我們無法幫助您。 – sorifiend

+2

第一次猜測:你沒有嵌入任何字體。 PDF代表* Portable *文檔格式,這意味着您查看PDF的位置(或在哪個操作系統上)無關緊要;它應該總是看起來一樣。主要的例外是使用非嵌入式字體。創建您的PDF作爲PDF/A文件來解決這個問題。第二個猜測:你的朋友使用一個破碎的PDF查看器;許多在網上找到的「PDF掃描儀」並不真正起作用。第三個猜測:你正在使用一個過時的iText版本。 –

+0

*「我做錯了什麼事情」* - 很有可能。 *「,如果是這樣,我該如何解決這個問題?」* - 您應該先提供一些信息,說明您實際做了什麼,即將關鍵代碼添加到問題中並共享樣本結果PDF。 – mkl

回答

0

假設您正在創建一個包含特殊字符的PDF。假設您正在使用您在系統上找到的特定字體混合英文和中文文本。

假設您沒有嵌入該字體的子集。這意味着PDF包含您在文檔中使用的特殊字符的Unicode值,但PDF不知道如何顯示相應的字形

現在,當你在你自己的機器上打開這個PDF文件時,它看起來很完美。爲什麼?由於您的PDF爲Unicode值,您需要在您自己的系統上需要的字體

然而,當你的朋友收到的文件,並打開PDF,他們有Unicode字符,但不是字體。他們的PDF閱讀器將使用與您想到的不同的字體。因此,內容可能看起來不同(我使用的詞是混雜)。將PDF放在某些在線存儲上然後在瀏覽器中查看PDF時也是如此:如果該在線存儲將PDF作爲圖像提供,則該圖像中的文本看起來會混亂,因爲在線服務沒有訪問您的系統上的字體。

如何解決這個問題? 嵌入(字體的一個子集)!

我不知道你正在使用的iText的版本,你不同意任何代碼,但是當你創建iText的5 BaseFont或iText的7 FontProgram/PdfFont,您可以使用參數來指示字體是否應嵌入文檔中。

不用擔心iText會嵌入完整字體,以防萬一您有巨大的中文字體。在這種情況下,iText將會對字體進行子集化,並只添加文檔中使用的字形。

相關問題