0

我正在研究虚拟打印机的项目,我想将 ps 文件转换为 txt 和 pdf。我正在使用 ps2pdf 并且它可以很好地转换为 pdf,但是当我想将 ps 文件转换为 txt 时,我使用 ps2ascii ,然后出现了问题。ps 文件包含俄语符号。如何将 ps 文件转换为 txt(俄语)?我在网上看到这是 unicode 问题。

4

1 回答 1

0

ps2ascii 只处理 ASCII(很明显,线索就在名称中)。ps2ascii shell 脚本和 PostScript 程序已从标准 Ghostscript 源代码树中删除,因为它太有限了,而且有更好的选择。

使用 PostScript 的问题在于,无法保证将用于呈现文本的字符代码与 Unicode 或任何其他标准文本编码相关联。PostScript 是一种用于打印而非编辑的语言。

可能很幸运,这完全取决于您生成的 PostScript 程序使用的字体和编码/CMap。我注意到您说的是“虚拟打印机”,这是在 Windows 上吗?如果是这样,您可能会走运,Windows PostScript 打印机驱动程序在将某些字体嵌入 PostScript 程序时会向至少某些字体添加额外(完全非标准)信息。此附加信息可用于检索 Unicode 代码点。

我会首先在 PostScript 上尝试 Ghostscript 的 txtwrite 设备(你应该直接使用 Ghostscript 而不是使用预烘焙的脚本),看看它是否能够提取文本。

如果没有,请尝试从 PostScript 创建 PDF 文件,然后在 PDF 文件上使用 txtwrite 设备。我不确定 txtwrite 设备是否具有 pdfwrite 设备的所有花里胡哨,它可能无法直接使用字体中的 Unicode 信息,但它肯定可以使用 PDF 文件中的信息。

我可能还应该指导您阅读 Ghostscript 的许可证,它是 AGPL 版本 3,这样您就不会在发现由于法律原因而无法使用的东西上浪费时间。

[编辑]

经过快速检查,我们似乎删除了 ps2ascii PostScript 程序,但将 ps2ascii 脚本改为使用 txtwrite 设备。因此,如果您使用相当新的 Ghostscript 版本,就会发生这种情况。如果这不能产生可接受的文本,请尝试创建一个 PDF 文件并在其上运行 ps2ascii。如果这不起作用,那么很可能您根本无法做您想做的事情,信息已在打印过程中消失。

如果您制作了一个无法使用的示例 PostScript 文件,我可以更明确地说。

于 2019-11-09T20:01:54.257 回答