如何在ghostscript pdf处理中使用/AlwaysOutline命令?

问题描述 投票:0回答:1

我有嵌入不同字体的 PDF。其中之一是彩色表情符号字体。由于某种未知的原因,带有表情符号的字体使我的打印软件崩溃。我发现的唯一方法是使用 gs

-dNoOutputFonts
参数将所有字体转换为轮廓。不幸的是文件变得非常大并且打印速度很慢。

然后我发现有一个 AlwaysOutline 参数应该转换为我想要的仅轮廓字体。

但是那里提供的示例对我没有任何影响:

gs -sDEVICE=pdfwrite -o out.pdf -c "<< /AlwaysOutline [/Calibri (Comic Sans) cvn] >> setdistillerparams" -f input.pdf

无论我如何尝试,我都无法制作出任何特定的字体。

这是我尝试过的

出于测试目的,我使用这些字体制作了 pdf:

# extracted with pdffonts version 22.02.0
name                                 type              encoding         emb sub uni object    ID
------------------------------------ ----------------- ---------------- --- --- --- ---------
CIGRAP+NotoSans                      CID TrueType      Identity-H       yes yes yes    526  0
PGJSDK+DejaVuSans                    CID TrueType      Identity-H       yes yes yes    534  0
FFCMLR+NotoSansSymbols2              CID TrueType      Identity-H       yes yes yes    538  0
VMLNYD+NotoSans-Italic               CID TrueType      Identity-H       yes yes yes    542  0
ZBMDWE+NotoSans-Bold                 CID TrueType      Identity-H       yes yes yes    546  0

这是 pdfalyze 实用程序的部分输出:

...
╭────────────── ─ ─                                                                                            │
│ 526. Font /CIGRAP (Type0)                                                                                │                                                                                            │
╰─────────────── ─ ─
┌─────────────────────────┬──────────────────┐
│                sub_type │ /Type0           │
│               base_font │ /CIGRAP+NotoSans │
│                   flags │ None             │
│            bounding_box │ None             │
│      /Length properties │ None             │
│ total advertised length │ None             │
└─────────────────────────┴──────────────────┘

...

然后我使用了这个命令:

gs -sDEVICE=pdfwrite -o out.pdf -c "<< /AlwaysOutline [/CIGRAP+NotoSans] >> setdistillerparams" -f input.pdf

我尝试在建议的命令中使用不同的字体名称:

/CIGRAP+NotoSans
/NotoSans
/CIGRAP
CIGRAP+NotoSans cvn
CIGRAP cvn
(CIGRAP+NotoSans) cvn
、...

没有任何帮助。没有错误。输出 PDF 中仍然有所有相同的字体。

对任何人都有效吗?

我做错了什么?

pdf fonts ghostscript postscript
1个回答
0
投票

在@KenS的帮助下我解决了我的问题。让我总结一下结果:

  1. 尝试最新版本的 Ghostscript。就我而言,它是 9.55 Linux 版本,无法正常工作。编译当前 v10.02.0 (2023-09-13) 有帮助。

  2. 某些类型的字体不仅需要声明字体名称,还需要声明字体名称及其 CMap(或编码?),如

    Identity-H
    。像这样:

gs -sDEVICE=pdfwrite -o out.pdf \
   -c "<</AlwaysOutline [/FontName-Identity-H]>> setdistillerparams" \
   -f in.pdf
  1. 如果您的软件显示的字体名称带有
    /QXGYNG+CairoFont-0-0
    这样的前缀,请使用不带前缀的字体:
    /CairoFont-0-0
© www.soinside.com 2019 - 2024. All rights reserved.