2012-08-22 71 views
1

我正在使用PDFBox在JInternalFrame內顯示PDF文件。當打開PDF我得到很多的警告是這樣的:用PDFBox和Swing顯示嵌入字體

Changing font on <m> from <Tahoma Negrita> to the default font 

據我所知,所報告的字體沒有一套標準的14個字型的一部分。所以我決定檢查這些字體是否嵌入在PDF文件中(認爲加載嵌入字體應該不會有問題,對吧?)。

因此,我打開不同的閱讀器上的文件,並檢查屬性/字體。我懷疑這部分是否報告文檔所需的字體或文檔中實際嵌入的字體。

我得到的信息如下:

BAAAA+Tahoma-Bold (embedded Subset), type:TrueType, Encoding: 
CAAAA+Tahoma (Embedded Subset), type:TrueType, Encoding: 

困惑這個問題,我研究瞭如何從嵌入的OpenOffice字體和發現,PDF/A-1A選項應該進行檢查。所以我使用這個選項創建了另一個PDF(如果在創建原始PDF文件時沒有使用這個),但我得到了相同的結果。

我希望你的指導能夠理解這是如何工作的。我希望能夠像PDF閱讀器一樣打開PDF文件。我也讀了關於PDFBox_External_Fonts.properties,但我猜這個文件不應該被修改,因爲我正在處理嵌入式字體。

謝謝。

回答

3

pdfbox無法解析嵌入的TrueType字體子集。

據我瞭解,嵌入式TrueType子集缺少pdfbox需要的字體文件的一些元數據。

該錯誤是已知的,但不容易解決。現在我只能建議使用嵌入式Type 1字體,pdfbox可以處理它們。

您也可以嘗試在org/apache/pdfbox/resources/PDFBox_External_Fonts.properties下的pdfbox.jar中設置完整字體文件的路徑,因此如果pdfbox無法解析子集,至少可以找到滿原始字體文件的路徑。也許這有效,但我沒有測試過。

祝你好運!