【问题标题】:ITextSharp Find coordinates of specific text in PDFITextSharp 在 PDF 中查找特定文本的坐标
【发布时间】:2012-10-13 18:30:16
【问题描述】:

我发现许多网站和帖子的问题与我的相同,但它们似乎都有一个共同点,即人们都在用如何在特定位置插入新文本的示例来回答它们。我有一个由另一个我无法控制的程序生成的 PDF 文档,它有一行供客户签名,但该行不在绝对位置,因此我们使用的名为 AssureSign 的服务无法正常工作,因为你必须知道签名行的位置在哪里。所以我需要创建一个新程序来查找签名行的位置并将该信息发送到assuresign系统。

这真的应该很简单,但由于某种原因我没有得到它

【问题讨论】:

    标签: c#-4.0 pdf itextsharp


    【解决方案1】:

    您可以使用 iText (Sharp) 的解析器包来查找给定文本的位置。不过,您必须实现自己的 RenderListener,因为该包的主要用例是文本提取,而不是文本定位。

    这并不像您想象的那么容易,例如单词的各个字符可能以任何顺序单独出现。

    PS:

    首先,您必须确定签名行是否由字符组成(正如您的问题似乎暗示的那样),或者它是否是绘制的路径。此外,您还必须确定该行在文档中是否唯一。

    在前一种情况下,您需要的 RenderListener 实现必须检查在其 RenderText 方法中转发以进行处理的 TextRenderInfo 对象。如果其文本内容包含构建signatrue 行的那些唯一字符,则必须存储此TextRenderInfo 的位置数据。如果行字符不是唯一的,您将必须找到一些使它们唯一的附加条件,例如一些前面的字符串,或者可能是文档中这些字符最后一次出现的事实。

    在后一种情况下,解析器包的功能必须有所扩展,因为它目前不报告路径。根据 iText 邮件列表,类似的扩展在 ToDo 列表中。

    【讨论】:

    • 我想我找到了您所指的示例,但我不确定如何使用它。 pastebin.com/LqDRDRd9
    • 你找到了一个从原始 iText LocationTextExtractionStrategy 派生的样本,它是一个 RenderListener。您需要构建一个不同的 RenderListener 来查找您要查找的字符串并最终返回其位置。
    【解决方案2】:

    This question isn't directly related to what you want to accomplish, but it is indirectly related

    JCIS 发布了一个很棒的应用程序,它向您展示了查找特定文本的艰巨任务,尽管使用的是 VB。它不会像将其插入 vb > c# 转换器那么简单,但它应该是可翻译的。您可能认为这似乎是一项容易完成的任务,但 PDF 不是一种文档格式,它在技术上是一种显示格式。这两者之间的区别是使这个过程如此漫长的原因。

    【讨论】:

      【解决方案3】:

      首先,如果只是单词是英文,你可以很容易地找到 parse, 但是当您的文档不是英文时,您应该完全理解您的语言的字体UNICODE

      【讨论】:

      • 文档始终为英文。我需要找到位置的区域我真的只需要 Y 坐标,因为 X 坐标始终保持不变。该区域在页面上只是更高或更低,具体取决于各个项目
      猜你喜欢
      • 1970-01-01
      • 2022-10-15
      • 1970-01-01
      • 2011-06-02
      • 1970-01-01
      • 2013-08-07
      • 1970-01-01
      • 1970-01-01
      • 2022-08-16
      相关资源
      最近更新 更多