我有一个使用 TrueType 字体的 PDF OCRB
,但未嵌入该字体。
所以我尝试在我的系统上安装该字体(顺便说一句是 SLES11 SP2),我做了以下事情:
- 双击 gnome 桌面上的字体并单击安装
- 复制到
/user/home/username/.fonts
文件夹里了 - 将其复制到
/usr/share/fonts
- 有根:
SuSEconfig --module fonts
fc-cache
当我尝试使用以下命令打印 .pdf 时:
lpr -PHL2400Ce -# 1 test.pdf
.pdf 打印得很好,但OCRB
字体消失了并被标准字体取代。
evince
但是,当我使用(gnome 文档查看器)打开 .pdf 时,我OCRB
在查看器中看到字体(正确),当我打印它(使用同一台打印机)时,它就在那里并且绝对正确。
我不明白这一点,因为我猜也以某种方式evince
使用?lpr
有什么想法我可以做什么吗? (对我来说能够通过命令行打印 .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
这给我带来了输出:
....
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
所以我在这里看到的是,即使没有消息,它也gs
替代Helvetica
了。知道为什么吗?OCRB
Can't find or can't open font...
Arial-Bold
答案1
您还需要在打印机渲染器中添加字体。打印机渲染器字体库的正确文件夹很难找到,但查看所有 CUPS/Ghostscript/lpr 配置,您会找到该位置。字体可能需要重新索引,并且 CUPS 和 GS 中都有相应的脚本。
为什么 Evince 能很好地打印出来,是因为通过轻微的强制,你基本上告诉它将所有东西预渲染为向量。
这有点不必要的复杂,主要是因为这些模块化部件是分开诞生的,并且在系统级别发生的聚合最近才发生。
Apple 在内部使用 CUPS,并以某种方式解决了字体安装问题。我没有检查细节,但基本上它要么使用中央系统范围的字体库,要么将字体复制到 GUI 和 CUPS 字体路径。我猜他们不会复制,而是更改了软件以支持通用字体路径。