避免从PDF中读取隐藏文本

时间:2016-05-16 19:48:19

标签: 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(pageText);
 }

它也在阅读隐藏的文字;有人可以建议我需要设置哪个属性,以便它不读取隐藏文本?

1 个答案:

答案 0 :(得分:0)

PDF中的每一个额外的不可见文本都是从坐标0,0(左下角)开始使用渲染模式3绘制的(既不是填充也不是笔划文本(不可见))。

在这种情况下,应该通过渲染模式进行过滤。为此,您必须明确将策略设置为过滤策略。

您在代码中使用的var notification = Titanium.Android.createNotification({ contentTitle: 'Notification 2', contentText : 'Just another notification', contentIntent: Ti.Android.createPendingIntent({intent: Ti.Android.createIntent({})}), icon: Ti.App.Android.R.drawable.warn, number: 5, when: new Date().getTime(), // Sound file located at /platform/android/res/raw/sound.wav sound: Ti.Filesystem.getResRawDirectory() + 'sound.wav', }); 重载

getTextFromPage

定义为

String pageText = PdfTextExtractor.getTextFromPage(reader, iCount);

因此,您隐式使用了public static String getTextFromPage(PdfReader reader, int pageNumber) throws IOException{ return getTextFromPage(reader, pageNumber, new LocationTextExtractionStrategy()); } 。现在你必须过滤这个策略,例如通过从代码中替换该行,如下所示:

LocationTextExtractionStrategy