将TextChunk拆分为单词

时间:2013-02-25 20:40:43

标签: itextsharp

我发现这个example将pdf文档拆分为TextChunks

有吗

a)将每个TextChunk进一步拆分为每个TextChunk中的单词/字符并仍能找到它的位置的方法?

b)将PDF解析为单词/字符而不是块并查找位置的方法?

1 个答案:

答案 0 :(得分:2)

  

是否有方法将每个TextChunk进一步拆分为每个TextChunk中的单词/字符,并且仍能找到它的位置?

您无法进一步拆分这些TextChunk对象,因为此TextChunk类仅仅是传输非常少量信息的辅助类,参见它的构造函数参数String str, Vector startLocation, Vector endLocation, float charSpaceWidth,特别是没有关于单个字符宽度或相关文本大小和字体的信息来导出单个字符宽度。

您当然可以更改方法RenderText(其中传入的更完整的TextRenderInfo实例将减少为TextChunk个实例):

public virtual void RenderText(TextRenderInfo renderInfo) {
  LineSegment segment = renderInfo.GetBaseline();
  TextChunk location = new TextChunk(renderInfo.GetText(), segment.GetStartPoint(), segment.GetEndPoint(), renderInfo.GetSingleSpaceWidth());
  locationalResult.Add(location);        
}

特别是,您可以先使用TextRenderInfo方法将GetCharacterRenderInfos()实例拆分为单个字符TextRenderInfo实例,然后遍历这些实例并为每个实例创建单独的TextChunk个实例

您可能没有在存储库中看到该方法,因为iTextSharp已经切换到新的SourceForge版本控制基础架构。因此,您应该切换到the current iTextSharp repository

  

是否有方法将PDF解析为单词/字符而不是块并找到位置?

当然,您可以实施IRenderListener来创建一个完全符合您需求的提取策略。您可以在iText和iTextSharp的stackoverflow上找到关于该主题的一些讨论,例如: ITextSharp Find coordinates of specific text in PDFGet the exact Stringposition in PDFRetrieve the respective coordinates of all words on the page with itextsharp和其他人。