2014-10-30 66 views
0

我正在使用iText解析來自PDF文件的文本。我發現一些文本被返回但不可見。 例如,我iText可以識別PDF中的不可見文本嗎?

  • 金融衍生」,這確實頁面
  • 金融衍生」,這是可見的存在,但仍然的iText返回。另外,它們不能由Adobe acrobat或Foxit選擇。

iText有一種方法來區分可見/不可見文本嗎?或者PDF格式是否有與此有關的任何規範?

+2

特定文本是如何被製成「隱形」的?它有什麼東西在它之上?非常小?沒有顏色,或者與它的背景相同?離開頁面?渲染在一個不包含大綱的字體?用一種將所有內容映射到一個空格字符的字體呈現? – usr2564301 2014-10-30 18:43:50

回答

2

您給沒有代碼很難提出實際的代碼......然而,爲了使文字無形的習慣方法是使用文本渲染模式。 PDF中的所有文本都有這樣的文本渲染模式,它決定文本是否呈現爲填充文本(普通),描邊文本,填充和描邊......並且其中一種可能性是「不可見」,它確保文本不是「顯示。

解析頁面上的文本iText和其他東西允許您篩選返回的文本 - 請參閱FilteredRenderListener。在過濾期間,您可以確定您是否對文本感興趣。有很多關於您可以使用TextRenderInfo對象檢查的文本的信息。該對象有一個名爲「getTextRenderMode」的方法,它將返回上述文本渲染模式。如果該調用返回「3」,那麼您知道該文本是隱形渲染的。

現在,如果您想確切知道這些文本是否確實呈現(並且不使用@jongware在其評論中提出的其他討厭技巧之一,那麼您必須檢查PDF或與其分享一個示例我們可以看一看

+0

有趣 - 這個特殊的渲染模式轉換爲[this「no stroke,no fill」](http://stackoverflow.com/a/ 5184903/2564301),還是它實際上是PDF規範的一部分?(在這種情況下,我很樂意將它添加到我的包中!) – usr2564301 2014-10-30 21:45:38

+1

(*其中一種可能性是「不可見」,確保文本未顯示*) - *此特定渲染模式是否將此轉換爲「無筆畫,無填充」或實際上是PDF規範的一部分* ISO 32000-1的表106將渲染模式3描述爲**既不是填充也不是描邊文本(不可見)**,所以**沒有描邊,沒有填充**和**不可見**應該確實重合。 – mkl 2014-10-30 23:17:33