我有一个格式如下的pdf文件。
texthere \ t \ t texthere \ t \ t \ ttxthere texthere \ t \ s \ t texthere \ s \ s \ s \ t texthere
是\ s-space \ t - horozontal标签。 但是当我应用itextsharp simpleextractionstrategy来提取文本时,它会给出以下文本。
texthere texthere texthere texthere texthere texthere
似乎无论水平空间有多长,只需用一个空格替换它。有没有办法在itextsharp中保持实际的长空间?
答案 0 :(得分:0)
这是因为PDF不是结构化文本格式。在呈现的PDF中看似正常的段落文本可能由数百个小文本块组成,不一定按照它们在页面上出现的逻辑顺序。许多因素包括字符和单词间距,horiztonal缩放,字体大小等共同决定文本块将在哪里绘制。
类SimpleTextExtractionStrategy及其姐姐LocationTextExtractionStrategy做了一个简单的工作,比较这些文本块的X,Y位置,并决定一个是在其他块之前还是之后,并将它们相应地附加到输出字符串。它们不会处理两个块之间的水平空间量。
小心!将PDF转换为结构合理的文本可能比您想象的要复杂得多,但如果您感兴趣,则需要修改LocationTextExtractionStrategy(或编写自己的策略)并比较文本块并插入多个空格或制表符到输出字符串基于最后一个块的末尾与当前块的开始之间的水平距离。正如我之前所说,这可能相当复杂,但这应该给你一个起点。
舒贾特