GhostScript PS到PDF转换-无颜色

GhostScript PS到PDF转换-无颜色,pdf,pdf-generation,ghostscript,postscript,Pdf,Pdf Generation,Ghostscript,Postscript,参考这篇文章,可以安全地假设GhostScript的PS到PDF转换仍然不能保证从转换的文档中剪切和粘贴文本吗?因为我也会在格式化文档中得到乱码的复制粘贴结果,尽管它可以处理纯文本文件 关于颜色问题,我正在使用Microsoft PS类驱动程序将文档打印为PostScript格式文件,然后使用上面附带的GhostScript v9.20 DLL示例源和输出将其转换为PDF格式。使用的选项如下: -dNOPAUSE -dBATCH -dSAFER -sDEVICE=pdfwrite -sColor

参考这篇文章,可以安全地假设GhostScript的PS到PDF转换仍然不能保证从转换的文档中剪切和粘贴文本吗?因为我也会在格式化文档中得到乱码的复制粘贴结果,尽管它可以处理纯文本文件

关于颜色问题,我正在使用Microsoft PS类驱动程序将文档打印为PostScript格式文件,然后使用上面附带的GhostScript v9.20 DLL示例源和输出将其转换为PDF格式。使用的选项如下:

-dNOPAUSE
-dBATCH
-dSAFER
-sDEVICE=pdfwrite
-sColorConversionStrategy=/RGB
-dProcessColorModel=/DeviceRGB

但是,它是在没有颜色的情况下转换的。我错过了一些选择吗?

你永远不能保证得到一个PDF文件,其中包含可以从PostScript程序中剪切和粘贴的文本。无法保证PostScript程序中有任何ToUnicode信息,如果没有这些信息,如果字体是此处的子集,则无法知道给定标志符号的Unicode代码点是什么

关于颜色,您提供的PostScript文件不包含颜色,因此它不是重影脚本,问题在于您生成PostScript的方式。据猜测,您使用的是单色打印机的打印机定义PPD文件

您可以通过使用下载字体的选项来改进文本,基本问题是您的PostScript程序不包含构建ToUnicode CMap所需的信息。否则,我们不得不假设字符代码是ASCII码,在您的例子中,因为字体是子集,所以它们不是ASCII码

出于某种原因,PostScript的内容似乎正在下载字体作为位图。这很难看,扩展性不好,可能是无法插入ToUnicode数据的原因。这也可能是由于您使用的字体造成的,如果您不喜欢TimesNewRoman,您可以尝试一些标准系统字体

虽然您提供了一个示例来查看,这很好,但我建议将来您将这个示例缩小,小得多。。。。在这种情况下,实际上不需要13页的重复内容。更多的内容意味着需要更多的时间来破译、尝试并将示例文件保持在演示问题所需的最低限度


简而言之,这两个问题似乎都是由于您的方式或生成PostScript的应用程序造成的。

,,,这可能会导致一个问题,为什么你不安装pdf打印机,而不是你目前正在努力工作的双重复杂性?我的一位同事指出,你发送的PostScript是为语言级别1设计的,PostScript的一个版本在大约25年前被取代。语言1级PostScript不支持颜色,字体支持有限。特别是因为它早于TrueType,所以不支持TT字体,这可能就是为什么要使用位图字体而不使用Unicode。我们显然不知道您是如何创建PostScript的,但您需要将其视为您的问题。Ghostscript可以创建PDF和JPEG,但它不是Windows打印驱动程序…..注意,PostScript是由Windows PScript 5.dll创建的,您称之为Microsoft PS类驱动程序,但该设备驱动程序受其打印到的设备的功能限制。如果您目前正在使用Apple LaserWriter PPD之类的产品,那么我建议您选择更新的产品并尝试使用,例如名称中带有“PS”的HP打印机。FWIW您看到的绝大多数PDF打印机产品都是通过使用Windows创建PostScript,然后使用PostScript解释器创建PDF。PScript 5.dll是正确的驱动程序,但正如我所说的,它生成的内容会根据它认为其打印目的的打印机的功能进行修改。在这种情况下,它将是“msxpsinc”打印机,我不知道这是什么。正如我所说,我建议你为最近的打印机安装一个PPD,就我个人而言,我已经安装了许多“虚拟”打印机,一些HP打印机和一个Xerox Phaser。我实际上没有任何打印机,我只是用它们来创建PostScript。因此,我认为如果您安装一些最新的东西来创建PostScript,它会工作得更好。好吧,那么msxpsinc.ppd显然是Microsoft XPS驱动程序,我怀疑您真正使用的是它,因为它创建XPS文件,而不是PostScript。诚然,如果您使用的是Windows 10,它可能在管道中的某个地方,因为Windows 10将所有东西都转换为XPS。为了获得PostScript输出,您必须安装PostScript打印机,这就是使用的PPD。例如,我正在使用Xerox Phaser 6120 PS和HP Laserjet 2300系列PS打印机,并将输出写入文件:这两种打印机都工作得很好。