2013-07-10 33 views
0

我正在使用iText創建多個頁面的PDF文檔。我添加在這個文件中間的頁面之一了一些獨特的文字,但使其不可見原樣在iText中查找不可見文本

Chunk chunk = new Chunk("invisible text here"); 
chunk.setTextRenderMode(PdfContentByte.TEXT_RENDER_MODE_INVISIBLE, 0f, null); 
com.lowagie.text.Document iTextDoc.add(new Paragraph(Element.ALIGN_JUSTIFIED, chunk)); 

之所以將這種無形的文本是在onEndPage()的時間來確定這個特定頁面。但它失敗了。
爲了實現在onEndPage(),我有以下的代碼 -

boolean b = (pdfWriter.getDirectContent().toString()).contains("invisible text here"); 

我得到儘可能falseb值。
如果我比較該頁面上的任何其他文本(可見),結果爲btrue
我試圖手動搜索PDF閱讀器中的不可見文本並找到文本。
我可以修改什麼來達到這個目的?

回答

2

假設您可以識別內容中的文本而無需詳細解析,這絕不是一個好主意。文本可以被分成多個部分,編碼可能無法平臺的默認字符編碼,等等......因此不要嘗試像

boolean b = (pdfWriter.getDirectContent().toString()).contains("invisible text here"); 

你可以達到你的目的

原因添加這個不可見的文本就是在onEndPage()時識別這個特定的頁面。

更容易。只需將您的PdfPageEvent實施中的成員(即您的onEndPage()方法中的類)添加到您的成員,並將其設置在您用來將不可見頁面內容添加到您用來添加到頁面的文本的位置。

現在,您可以直接在您的onEndPage().中測試該成員變量不要忘記重置變量後,最好在onEndPage()本身!

+0

完美。完全按照您的建議完成。事實上,在調試時,我甚至可以看到我的類實現的所有成員,但只是意識到要添加一個成員,然後按照您的建議進行檢查。謝謝。 –