Ghostscript - 后记代码的缩进

Posted

技术标签:

【中文标题】Ghostscript - 后记代码的缩进【英文标题】:Ghostscript - Indentation of postscript code 【发布时间】:2020-08-29 20:25:52 【问题描述】:

我是否可以选择让 Ghostscript 缩进它创建的 Postscript?

一切都从一行的开头开始,我觉得很难理解。

另外,我正在使用 Emacs 和 ps-mode。

如果有人知道如何在这种模式下缩进代码,我将不胜感激(道歉,因为这可能与此 StackExchange 无关)

【问题讨论】:

【参考方案1】:

不,没有缩进输出的选项。

无论如何,PostScript 几乎都被认为是一种只写语言,而 ps2write 的输出(虽然你没有说,但我假设你正在使用它)特别困难,因为它从根本上用 PostScript 程序输出 PDF 语法将其解析为 PostScript 操作。

你为什么要读它?

[编辑]

您可以随时编辑您的问题,无需发布新答案。

恐怕你想做的事情并没有你想的那么简单。

如果您收到的 PDF 文件始终以相同的方式创建,则此用例可能是可能的,但存在重大问题。

您用来替代缺失字体的字体必须以相同的方式编码。例如,PDF 文件中的字体被编码为 0x41 为“A”,您需要确保替换字体也被编码为 0x41 为“A”。所以仅仅 findfont、scalefont、setfont 序列并不总是足够的,有时你需要重新编码字体。

CIDFonts 将是一个主要的绊脚石。首先是因为 ps2write 根本不发出 CIDFonts。这些不是 2 级 PostScript 的一部分。因此,CIDFont 中的所有文本都将嵌入为位图。如果您的原始文件不包含 CIDFont,那么您将获得后备 CIDFont 位图。

其次,CIDFonts 可以使用可变长度的多字节字符代码。您不能简单地将 CIDFont 替换为 Font,它是行不通的。

显然,最好的解决方案是在创建的 PDF 文件中嵌入所需的字体。这是最佳实践。如果您无法做到这一点,那么我建议您使用 Ghostscript 用来查找字体的 fontmap.GS 和 cidfmap 文件,而不是尝试手动编辑 PostScript。

Ghostscript 已经有大量代码可以自动进行字体替换,同时使用 Fonts 和 CIDFonts 作为替代品,并且它会根据需要完成重新编码字体或构建 CMap 的所有艰苦工作。如果您在 Windows 上,可能已经为您完成了大部分操作,当您安装 Ghostscript 时,它会询问您是否要创建字体映射。如果你说是,那么它会

在这些文件中添加您要使用的字体替换(它们有解释布局的 cmets),然后使用 pdfwrite 设备制作一个新的 PDF 文件。将EmbedAllFonts 设置为true(您可能还需要添加一个AlwayEmbed 字体数组,具体列出字体)并将SubsetFonts 设置为false。

这应该创建一个新的 PDF 文件,其中缺少的字体已被您定义的替代品替换,这些替代品将嵌入到新的 PDF 文件中并且它们不会是子集(Acrobat 通常会拒绝在子集字体)。

我上面提到的开关是标准的 Adob​​e Distiller 参数,但它们是为 pdfwrite here 记录的。有一些关于添加字体 here 和 here 的文档,专门针对 CIDFonts here。

基本上我建议你定义你的替换并让 Ghostscript 为你完成工作。

【讨论】:

请看下面的答案。评论字段太短,我无法回答您的问题“您为什么要阅读它?”【参考方案2】:

这不是对问题的回答,而是对 KenS 关于“你为什么要阅读它?”的问题的回答

我试着把它放在评论框中,但它太长了。

我是一名退休工程师,拥有强大的编程背景。

我想阅读和理解后记代码,原因如下。

我把玩重复桥牌作为一种爱好。我收到了一个 PDF 文件,其中包含所谓的公约卡(桥接协议的单页文档)。

我经常想编辑这些文件。

当我使用 Adob​​e Illustrator 打开时,我必须花费大量时间将系统上不存在的字体替换为我拥有的字体。

我可以使用 Ghostscript 将 PDF 导出为 postscript 文件。

我打算编写一个小程序,将嵌入的字体替换为我用来替换它们的字体。

我打算保持 postscript 文件不变并插入类似的东西

  /HelveticaMonospacedPro-RG findfont
  12 scalefont setfont

就在文字的上方。

我计划使用我系统上的字体(例如 HelveticaMonospacedPro-RG)。

【讨论】:

以上是关于Ghostscript - 后记代码的缩进的主要内容,如果未能解决你的问题,请参考以下文章

合并两个后记时 ghostscript 不保留页面级别参数

GhostScript 不可恢复的错误:未定义的文件名

使用 GSView 5.0 打印后记

嗨,我正在寻找在 solaris 环境中将 docx 文件集转换为 pdf 的解决方案

在 C++ 中测量 postscript 字体宽度

PS转PDF。 GhostScript 异常 - 无法初始化 Ghostscript 解释器。错误代码是-100