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

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

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

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

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

【问题讨论】:

    标签: ghostscript postscript


    【解决方案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 记录的。有一些关于添加字体 herehere 的文档,专门针对 CIDFonts here

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

    【讨论】:

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

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

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

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

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

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

    我经常想编辑这些文件。

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

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

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

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

      /HelveticaMonospacedPro-RG findfont
      12 scalefont setfont
    

    就在文字的上方。

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-05-18
      • 2011-06-23
      • 1970-01-01
      • 1970-01-01
      • 2011-09-07
      • 2010-09-18
      • 1970-01-01
      • 2019-06-05
      相关资源
      最近更新 更多