2015-01-21 48 views
2

我有一個應用程序,用於從pdf文件中提取標題。應用程序應該使用的文檔都具有或多或少連貫的結構和格式,事實上,告訴文本塊是否粗體非常重要。最近我遇到了一堆文件,其中一些塊可視化地顯示爲粗體,但沒有字體字符串表示形式的「粗體」部分。以下SO線程how can i get text formatting with iTextSharp幫助我理解,還有一種使文本顯示爲粗體的方法。然而在我的情況下調用GetTextRenderMode()也沒有幫助,因爲它返回0就好像它是普通文本一樣。那麼是否還有其他方式讓文字顯示爲粗體,並且是否可以使用iTextSharp檢測它?使用iTextSharp檢查PDF文檔中的文本片段是否使用粗體的方法是什麼

+0

請分享有問題的PDF文件進行分析。還有其他方法可以使字形顯示爲粗體,例如以微小的偏移量進行雙面打印。 – mkl 2015-01-21 11:11:06

+0

一個單獨的頁面,可以很好地瞭解我寫的內容:https://www.dropbox.com/sh/thhbp3qy8hpybxe/AABJtS5UkXE32V_kBFu_uPQea?dl=0。有兩個標題顯示爲粗體,但字體名稱如下所示:「JOJJAH + TT116t00」,GetTextRenderMode()對於所有這兩個塊都返回0。 – user2082616 2015-01-21 11:59:00

回答

4

您正在假設PDF文件中的字體知道它是否是粗體。讓我們看看裏面,並檢查你的假設是否正確。

這是什麼字體TT116t00的子集JOJJAH看起來,當你看你有共同的PDF文件的內部結構,如:

Internal view showing how a font is stored inside a PDF

我們看到,字體subtye /TrueType,我們看到/ItalicAngle是0,並且...我們看到設置了/Flags的第3位。首先我們來看看PDF參考找出這告訴我們:

PDF Reference 1.7 section 5.7.1

我引述:

字體包含的Adobe標準拉丁字符集之外的字形。

字形看起來粗體,因爲字形的繪製方式是粗體。你看到字體粗體,因爲你是人。但是,當一臺機器查看字體時,它不知道字體爲粗體。一臺機器只需遵循存儲在/FontFile2流中的說明。

總之:iTextSharp沒有任何跡象表明字體是粗體。

+1

非常感謝!我完全錯過了這一點,它可能是非標準字形的問題,已經看起來像大膽。至少現在我確信,沒有簡單的方法來挑選出所有的東西,那些看起來像是大膽的 – user2082616 2015-01-21 13:44:58

相關問題