我发现这个example将pdf文档拆分为TextChunks
有吗
a)将每个TextChunk进一步拆分为每个TextChunk中的单词/字符并仍能找到它的位置的方法?
或
b)将PDF解析为单词/字符而不是块并查找位置的方法?
答案 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 PDF,Get the exact Stringposition in PDF,Retrieve the respective coordinates of all words on the page with itextsharp和其他人。