2013-07-10 65 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

完美。完全按照您的建议完成。事实上,在调试时,我甚至可以看到我的类实现的所有成员,但只是意识到要添加一个成员,然后按照您的建议进行检查。谢谢。 –