如何嵌入 pdflatex 生成的 pdf 中的所有字体

如何嵌入 pdflatex 生成的 pdf 中的所有字体

我在Ubuntu中使用pdflatex生成pdf文件,但是由于缺少字体,没有通过检查。网上的建议有:

  1. pdf-ps-pdf:虽然这样做会破坏原始文件。pdf 看起来很糟糕。
  2. 使用 latex-dvips-...:这个图像大小有问题。
  3. 使用 Adob​​e Reader,手动包含这些字体:Ubuntu 上不存在 Adob​​e Reader

我该如何继续?

答案1

ubuntu 中的系统查看器提供了一个简单的方法。使用系统查看器打开您的 pdf。点击文件->打印,选择打印到文件,然后打印。现在您就得到了它。生成的文件包含所有字体。您可以使用命令 pdffonts 进行检查

答案2

在 tex 帮助论坛上有很多关于此问题的帖子

https://tex.stackexchange.com/questions/275715/how-to-compile-with-embedded-font-in-latex-and-preserve-figures

你的 3 个选项不太好,可能没有帮助。我会使用 ghostsscript,但不知道它是否适合你的情况。

我很惊讶你现在遇到了这个问题。你使用的是哪个版本的 pdflatex?字体嵌入在新版本的 pdflatex 中。

但是,包含的图像文件中可能会缺少字体。您需要单独修复这些文件。例如,如果您使用 R 中的 pdf 包含文件,则字体不会嵌入其中,您需要修复图形文件,而不是保存它们的 pdflatex 文档。我最近使用 ghostscript 修复了这个问题。我不会考虑任何其他方法。

我认为特定的字体可能会有所不同。

在这种情况下,通常会有一个可重现的示例。收集详细信息并前往 tex.stackexchange 提问。

编辑中添加:

这是我运行的一个 shell 脚本,它使用 ghostscript 在目录中的所有 pdf 文件中插入字体。我将其命名为 embedFontInPDF.sh

#!/bin/bash

## Paul Johnson
## 2013-05-11
##
## R creates pdf files that do not have fonts embedded. This
## uses ghostscript to fix that. It takes all pdf in a directory
## and embeds fonts.
##
## Todo: Make command line argument smarter

for i in *.pdf; do
    base=`basename $i .pdf`;
    basenew="${base}/newtemp.pdf"

   /usr/bin/gs -o $basenew -dNOPAUSE -dPDFSETTINGS=/prepress     -sDEVICE=pdfwrite $i

    mv -f $basenew $i
done;

相关内容