我刚刚在尝试使用 lulu.com 发布时遇到了嵌入字体的问题。虽然每个人似乎都“应该”处理这 35 种标准字体,但出于某种奇怪的原因,他们不会接受没有包含这些字体的 pdf。因此,根据Daniel Lemire 的博客应该可以工作(我还没有尝试,但希望它确实可以工作)是将 pdf 转换为 ps 然后再转换回 pdf 并包含当时的字体:
pdftops file.pdf
ps2pdf14 -dPDFSETTINGS=/prepress file.ps
但至少在我看来,这是错误的做法。有没有办法将参数直接传递给 pdflatex 以告诉它嵌入这些字体?
如果没有的话——我们该如何获得这样的功能?(因为不可能只有我一个人遇到这种问题)
答案1
确保文件pdftexDownloadBase14
中的设置设置updmap.cfg
为,true
以使 pdflatex 嵌入基本 14 种 pdf 字体。如果您使用普通 latex,则应设置dvipdfmDownloadBase14
为true
。最好同时设置两者。在我的 TeXLive 2010 安装中,它已经设置为true
,并且我从未遇到过 IEEE 论文提交问题。
您可以通过运行来编辑此配置文件updmap --edit
(在 Linux 下最有可能sudo
事先以 root 身份使用;不确定 M$ Windows 是否如此)。
以下是文件中的解释updmap.cfg
:
# pdftexDownloadBase14
#
# Should pdftex download the base 14 pdf fonts? Since some configurations
# (ps / pdf tools / printers) use bad default fonts, it is safer to download
# the fonts. The pdf files will get bigger, though.
# Valid settings are true (download the fonts) or false (don't download
# the fonts). Adobe recommends embedding all fonts.
pdftexDownloadBase14 true
还要确保作为图像包含的 PDF 或 EPS 文件包含所有内容他们的字体本身。如果您从 M$ Office(例如 Visio)生成这些 PDF 或 EPS 图像,这可能是一个问题,因为它们使用最明确的不同字体。据我所知,LaTeX 无法包含这些缺失的字体,因为它们不是主文档的一部分,而是嵌入对象(图像)的一部分。这里唯一的解决方案是先将字体嵌入到它们中,方法是使用您用于此目的的软件(例如 PDF 打印机)中的正确设置重新生成它们,或者通过运行ps2pdf14
在图片事先而非最终文件。
答案2
我知道这是一个老话题,但我在寻找解决方案时偶然发现了它。我找到了一个,所以我与你分享。我通常嵌入由 R 生成的 pdf。不幸的是,R 也不嵌入字体。使用 ghostscript 处理 LaTeX 的输出将保留文档中的所有链接:
gs -dNOPAUSE -dBATCH -sDEVICE=pdfwrite -dEmbedAllFonts=true -sOutputFile=$YOUR_OUTPUT_FILE.pdf -f $YOUR_INPUT_FILE.pdf
-dNOPLATFONTS
如果系统上安装的字体没有特定文档所需的所有字符,还可以添加到命令行以使用标准 pdf 字体(如 Palatino、Times 和 Helvetica)的 ghostscript 版本。
答案3
不幸的是,当我尝试在图像中嵌入字体以用于 pdfTeX 时,Tobias 的方法对我不起作用。根据 StackOverflow 的答案,遵循以下命令行对我有用:
gs -dCompatibilityLevel=1.4 \
-dPDFSETTINGS=/screen \
-dCompressFonts=true \
-dSubsetFonts=true \
-dNOPAUSE \
-dBATCH \
-sDEVICE=pdfwrite \
-sOutputFile=image_with_fonts.pdf \
-c ".setpdfwrite <</NeverEmbed [ ]>> setdistillerparams" \
-f image_without_fonts.pdf