阅读多语言PDF文档
当iText阅读PDF(将页面内容提取为字符串变量)时,内容将通过以下方式修复:
reader = new PdfReader(getResources().openRawResource(R.raw.resume1));
original_content = PdfTextExtractor.getTextFromPage(reader, 2);
String sub_content = original_content.trim().replaceAll(" {2,}", " ");
sub_content = sub_content.trim().replaceAll("\n ", "\n");
sub_content = sub_content.replaceAll("(.+)(?<!\\.)\n(?!\\W)", "$1 ");
如果文档只有1列,但如果文档有多列,则每行提取文档1。它会结合左右列。
我使用this作为示例PDF,这是来自START QA文档。
如何阅读多重PDF文档?
答案 0 :(得分:2)
这个问题有两种不同的方法,使用的选择取决于PDF本身。
如果问题中PDF的页面内容中的字符串已按所需顺序排列:而不是LocationTextExtractionStrategy
重载隐式使用的PdfTextExtractor.getTextFromPage
你使用,明确使用SimpleTextExtractionStrategy
;在你的情况下:
original_content = PdfTextExtractor.getTextFromPage(reader, 2, new SimpleTextExtractionStrategy());
如果相关PDF的网页内容中的字符串按所需顺序不:而不是隐式使用的LocationTextExtractionStrategy
您使用的PdfTextExtractor.getTextFromPage
的重载,在FilteredTextRenderListener
中明确地包含一个这样的策略,限制它仅接收单个列的区域的文本;在你的情况下:
Rectangle left = new Rectangle(0, 0, 306, 792);
Rectangle right = new Rectangle(306, 0, 612, 792);
RenderFilter leftFilter = new RegionTextRenderFilter(left);
RenderFilter rightFilter = new RegionTextRenderFilter(right);
[...]
TextExtractionStrategy strategy = new FilteredTextRenderListener(new LocationTextExtractionStrategy(), leftFilter);
original_content = PdfTextExtractor.getTextFromPage(reader, 2, strategy);
originalContent += " ";
strategy = new FilteredTextRenderListener(new LocationTextExtractionStrategy(), rightFilter);
original_content += PdfTextExtractor.getTextFromPage(reader, 2, strategy);