使用未嵌入的 TrueType 字体 (cups / lpr) 打印 PDF

ten*_*use 5 printing fonts cups pdf

我有一个 PDF,其中使用了 TrueType 字体OCRB,但未嵌入该字体。

所以我尝试在我的系统上安装字体(顺便说一下是 SLES11 SP2),我做了以下事情:

  • 双击 gnome 桌面上的字体并单击安装
  • 复制到/user/home/username/.fonts文件夹中
  • 复制到 /usr/share/fonts
  • 用根: SuSEconfig --module fonts
  • fc-cache

当我尝试使用以下命令打印 .pdf 时:

lpr -PHL2400Ce -# 1 test.pdf
Run Code Online (Sandbox Code Playgroud)

.pdf 打印得很好,但OCRB字体不见了,取而代之的是标准字体。

但是,当我使用evince(gnome 文档查看器)打开 .pdf 时,我看到查看器中的OCRB字体(正确),当我打印它(使用同一台打印机)时,它在那里并且绝对正确。

我不明白这一点,因为我猜evincelpr以某种方式使用?任何想法我能做什么?(对我来说能够通过命令行打印 .pdf 非常重要,因为它将成为在后台运行的批处理作业的一部分)

我也尝试了一些这样的方法:

gs -dSAFER -dNOPLATFONTS -dNOPAUSE -dBATCH -sDEVICE=pdfwrite -sPAPERSIZE=letter -dCompatibilityLevel=1.4 -dPDFSETTINGS=/printer -dCompatibilityLevel=1.4 -dMaxSubsetPct=100 -dSubsetFonts=true -dEmbedAllFonts=true -sOutputFile=output2.pdf -f test.pdf
Run Code Online (Sandbox Code Playgroud)

这给我带来了输出:

....
Can't find (or can't open) font file Arial-BoldMT. 
Didn't find this font on the system!
Substituting font Helvetica-Bold for Arial-BoldMT.
Substituting font Helvetica for OCRB
Run Code Online (Sandbox Code Playgroud)

因此,我在这里看到的是,gs替代HelveticaOCRB,即使没有消息Can't find or can't open font...,因为它是Arial-Bold。知道为什么吗?

小智 1

您还需要在打印机渲染器中添加字体。打印机渲染器字体库的正确文件夹很难找到,但查看所有 CUPS/Ghostscript/lpr 配置,您会找到该位置。字体可能需要重新索引,并且 CUPS 和 GS 中都有相应的脚本。

为什么 Evince 能很好地打印出来,是因为通过轻微的强制,你基本上告诉它将所有东西预渲染为向量。

这有点不必要的复杂,主要是因为这些模块化部件是分开诞生的,并且在系统级别发生的聚合最近才发生。

Apple 在内部使用 CUPS,并以某种方式解决了字体安装问题。我没有检查细节,但基本上它要么使用中央系统范围的字体库,要么将字体复制到 GUI 和 CUPS 字体路径。我猜他们不会复制,而是更改了软件以支持通用字体路径。