Text 避免从PDF中读取隐藏文本
我正在使用iText库阅读PDFText 避免从PDF中读取隐藏文本,text,itext,hidden,Text,Itext,Hidden,我正在使用iText库阅读PDF PdfReader reader = new PdfReader(dir1 + iFileName); for(int iCount=1; iCount<=reader.getNumberOfPages(); iCount++){ String pageText = PdfTextExtractor.getTextFromPage(reader, iCount); System.out.println
PdfReader reader = new PdfReader(dir1 + iFileName);
for(int iCount=1; iCount<=reader.getNumberOfPages(); iCount++){
String pageText = PdfTextExtractor.getTextFromPage(reader, iCount);
System.out.println(pageText);
}
PdfReader reader=新的PdfReader(dir1+iFileName);
对于(int iCount=1;iCount,PDF中的每一段额外的不可见文本都是从坐标0,0(左下角)开始,使用渲染模式3(既不是填充文本,也不是笔划文本(不可见))绘制的
在这种情况下,应该通过呈现模式进行过滤。为此,必须将策略显式设置为过滤策略
在代码中使用的getTextFromPage
重载
String pageText = PdfTextExtractor.getTextFromPage(reader, iCount);
定义为
public static String getTextFromPage(PdfReader reader, int pageNumber) throws IOException{
return getTextFromPage(reader, pageNumber, new LocationTextExtractionStrategy());
}
因此,您隐式地使用了LocationTextExtractionStrategy
。现在您必须过滤此策略,例如,通过如下方式替换代码中的该行:
RenderFilter modeFilter = new RenderFilter(){
public boolean allowText(TextRenderInfo renderInfo){
return renderInfo.getTextRenderMode() != 3;
}
};
TextExtractionStrategy strategy = new LocationTextExtractionStrategy();
strategy = new FilteredTextRenderListener(strategy, modeFilter);
String pageText = PdfTextExtractor.getTextFromPage(reader, iCount, strategy);
文本是如何隐藏的?它只是在页面边界之外吗?然后按区域过滤。它是白色加白色还是呈现为不可见?然后按这些标准过滤。它是否被其他内容覆盖?为此,您需要相应地扩展提取策略。谢谢您的建议。我有PDF,并且在使用Java读取文件中的文本时我正在使用PDF阅读器获取肉眼看不见的文本。但我将尝试找到如何使其不可见,并相应地进行操作。或者,您可以共享您的PDF文件进行分析。您好mkl-您能建议我如何使用PDF向您发送消息吗?我试图在您的个人资料中找到类似的内容,但找不到此类选项。谢谢。最好的选择是使用dropbox或google drive上的公共共享,并在此处发布URL。或者,您可以将其发送到我的stackoverflow配置文件中的免费文本中找到的邮件地址,我可以将其公开。非常感谢您分享您的知识。我是PDF编码新手,不知道您共享了什么.1,但我似乎还没有资格投票。你可以接受答案(点击左上角的勾号)。