当我从 PDF 复制并粘贴文本时,它显示的内容与原始内容不同。
例如:
原文为“你好,我叫维克多,今年 23 岁”。
当我复制粘贴这段文字:“嗨,我今年 23 岁,我的名字叫 Victor”
我该如何解决这个问题?我粘贴文本时使用的是 Adobe Reader XI 和普通记事本或 Microsoft Word。这是第一步,因为我正在尝试用 c# 实现一个应用程序,我应该从许多 pdf 文档中提取所有文本,每次我用 Itextsharp 库提取信息时都是同样的事情,一切都一团糟。
谢谢你!
答案1
您需要在 C# 中的提取过程中应用某种逻辑。
PDF 文档并非旨在成为一种有用的文本存储方法,以便随后在其他软件中使用或以其他格式输入。PDF 的设计初衷是打印页面的表示形式,由一系列指令组成,例如Text of font A, size B at co-ordinate X,Y
。它不使用与 Microsoft Word 或 HTML 相同的方法,在这些方法中,您可以将文档格式化为分组的段落或行。
实际上,当您从 PDF 软件中复制并粘贴时,它会将这些说明解释为模糊地模拟我们对段落结构的想法,并会尝试以您期望的方式选择它们。但是,正如您所见,这并不总是完美的,而且很容易出错。
恐怕你的问题的答案是问题问题不在于您的示例,而在于使用 PDF 格式来实现您想要实现的功能。它不是为文本解析而设计的,尽管它当然可以做到,而且 iTextSharp 肯定会为您提供实现这一目标的工具,但您可能需要“模拟”逐行阅读才能做到这一点。
当然,你会发现有些 PDF 看起来制作得很完美,复制粘贴也没有问题。不过请记住,这更多的是软件的问题创造PDF 使用可预测的策略来实现这一点,并且软件阅读PDF 使用可预测的策略来恢复它,而不是存在一个完美的方法来做到这一点。