如何使用 ghostscript -sDEVICE=txtwrite 在每个单词后添加分隔符

how to add a separator after each word with ghostscript -sDEVICE=txtwrite

我已经使用 ghostscript 成功地从包含表格的 PDF 中提取文本。

这个简单的命令非常有效:

gswin64c -sDEVICE=txtwrite -o test.txt "c:\reports\sample.pdf"

然而,有些词会连在一起,尤其是在表格中,例如:

  234801111111109-12-2014 16:17:04764030208117034 2883253100.00  Payment
  234801111111109-12-2014 16:18:461088956908117033 2883253400.00 Payment
  234801111111109-12-2014 16:19:48769948208117040 2883253750.00  Payment

实际上应该是:

  2348011111111 09-12-2014 16:17:04 764030208117034 2883253 100.00  Payment
  2348011111111 09-12-2014 16:18:46 1088956908117033 2883253 400.00 Payment
  2348011111111 09-12-2014 16:19:48 769948208117040 2883253 750.00  Payment

请问有没有办法在每个单词的末尾添加一个分隔符。

这将完美解决这个问题。

不抱歉,这个想法根本行不通。

PDF 文件中没有 'word' 这样的东西,只有一系列字符代码和位置。 txtwrite 代码竭尽全力通过查看每段文本的位置和所用字体的规格来尝试重建单词,但原文中没有单词。

我并不认为这是完美的,如果你想让我看一下,你需要提供原始文件。最佳解决方案是打开错误报告并将文件附加到其中。

对于不同的项目(RTF 输出),这仍然是我正在关注的领域,所以现在是报告它的好时机。我不能保证能够解决它,但很可能只是 'rebuild the page layout' 代码对文本的位置过于 simple-minded。

但是,您可以获得较低级别的输出,XML-like 输出将分别为您提供每个文本片段及其在页面上的位置。您可以自己使用该信息来重建内容。

默认选项尝试通过使用 space 字符尽可能重现原始布局来构建页面的简单表示,但我不认为没有错误: -)