0

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

有没有

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

或者

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

4

1 回答 1

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 版本控制基础设施。因此,您应该切换到当前的 iTextSharp 存储库

有没有一种方法可以将 PDF 解析为单词/字符而不是块并找到位置?

当然,您可以实施IRenderListener以创建完全符合您需要的提取策略。您可以在 iText 和 iTextSharp 的 stackoverflow 上找到有关该主题的一些讨论,例如ITextSharp 在 PDF 中查找特定文本的坐标,在 PDF获取确切的字符串位置,使用 itextsharp等检索页面上所有单词的相应坐标

于 2013-02-26T10:11:56.350 回答