Text 避免从PDF中读取隐藏文本

Text 避免从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

我正在使用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(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,但我似乎还没有资格投票。你可以接受答案(点击左上角的勾号)。