我发现许多网站和帖子的问题与我的相同,但他们似乎都有一个共同点,就是人们正在回答他们如何在特定位置插入新文本的示例。我有一个由我无法控制的另一个程序生成的PDF文档,它有一行供客户登录,但该行不在绝对位置,因此我们使用的名为AssureSign的服务将无法正常工作,因为你必须知道签名行的位置。因此,我需要创建一个新程序,找到签名行的位置并将该信息发送到assuresign系统。
这真的应该很简单,但由于某些原因我没有得到它
答案 0 :(得分:1)
您可以使用iText(Sharp)的解析器包来查找给定文本的位置。但是,您必须实现自己的RenderListener,因为该包的主要用例是文本提取,而不是文本位置查找。
这并不像你想象的那么容易,例如单词的各个字符可以按任何顺序单独出现。
<强> PS:强>
首先,您必须找出签名行是否包含字符(正如您的问题似乎暗示)或是否是绘制路径。此外,您还必须确定该行是否在文档中是唯一的。
在前一种情况下,您需要的RenderListener实现必须检查转发的TextRenderInfo对象,以便在其RenderText方法中进行处理。如果其文本内容包含构建signatrue行的那些唯一字符,则必须存储此TextRenderInfo的位置数据。如果行字符不是唯一的,则必须找到一些其他条件,使其唯一,例如一些前面的字符串,或者可能是文档中最后一次出现这些字符的事实。
在后一种情况下,解析器包功能必须稍微扩展,因为它当前不报告路径。根据iText邮件列表,这样的扩展名在ToDo列表中。
答案 1 :(得分:0)
This question isn't directly related to what you want to accomplish, but it is indirectly related
JCIS发布了一个很棒的应用程序,它向您展示了定位特定文本的艰巨任务,尽管使用VB。它不会像插入vb&gt;那么简单。 c#转换器,但它应该是可翻译的。这可能看起来像你想象的那样容易完成,但PDF不是文档格式,它在技术上是一种显示格式。这两者之间的差异使得这个过程如此漫长。
答案 2 :(得分:-1)
首先,如果只是单词是英文,你可以轻松找到解析, 但是当你的文件不是英语时,你应该完全理解你的语言字体 UNICODE 。