LaTeX 編譯 PDF 若未嵌入字體,跨平台檢視/列印易出現字體替換、缺字、排版錯亂。本文提供從 .tex 經 latex → dvips → ps2pdf 產出**全字體嵌入** PDF 的標準指令鏈與關鍵參數解析,確保 PDF/A 相容與列印品質。
pdffonts document.pdf
# 輸出顯示 "Helvetica" 等字體 emb=no (未嵌入)
# 導致不同檢視器/作業系統字體回退、列印缺字
# 1. LaTeX 編譯產生 .dvi
latex document.tex
# 2. dvips 轉 PostScript,強制嵌入 Type 1 字體
dvips -Ppdf -G0 -t letter -o document.ps document.dvi
# -Ppdf : 使用 pdf 印表機設定 (內含字體嵌入配置)
# -G0 : 強制嵌入所有字體 (關鍵)
# -t letter : 紙張大小 (可改 a4)
# 3. ps2pdf 以 Ghostscript 產出高品質 PDF
ps2pdf -dPDFSETTINGS=/prepress \
-dCompatibilityLevel=1.4 \
-dAutoFilterColorImages=false \
-dAutoFilterGrayImages=false \
-dColorImageFilter=/FlateEncode \
-dGrayImageFilter=/FlateEncode \
-dMonoImageFilter=/FlateEncode \
-dDownsampleColorImages=false \
-dDownsampleGrayImages=false \
document.ps document.pdf
| 參數 | 效果 |
|---|---|
-dPDFSETTINGS=/prepress | 預設高解析度 (300 dpi)、嵌入所有字體、不壓縮影像,適合印前輸出 |
-dCompatibilityLevel=1.4 | PDF 1.4 相容性 (支援透明度、JPEG2000 等) |
-dAutoFilterColorImages=false | 停用自動濾鏡選擇,強制指定編碼 |
-dColorImageFilter=/FlateEncode | 彩色影像用 Flate (無損壓縮) |
-dGrayImageFilter=/FlateEncode | 灰階影像用 Flate |
-dMonoImageFilter=/FlateEncode | 單色影像用 Flate |
-dDownsampleColorImages=false | 不降採樣彩色影像 (保持原解析度) |
-dDownsampleGrayImages=false | 不降採樣灰階影像 |
pdffonts document.pdf
# 所有字體 emb=yes、type=Type 1/TrueType、file=內建
# 在 preamble 加入
\usepackage[T1]{fontenc}
\usepackage{lmodern} # Latin Modern 字體內建 Type 1
# 或使用 fontspec (XeLaTeX/LuaLaTeX) 直接嵌入系統字體
pdflatex document.tex
# 檢查 pdffonts 確認嵌入
現代 pdflatex + lmodern 或 XeLaTeX/LuaLaTeX 通常預設嵌入,但舊版或特殊字體仍需上述 dvips+ps2pdf 流程。
| 需求 | 參數設定 |
|---|---|
| 全字體嵌入 | -G0 (dvips) + -dPDFSETTINGS=/prepress (ps2pdf) |
| CMYK 色彩空間 | -dProcessColorModel=/DeviceCMYK |
| PDF/X-1a 相容 | -dPDFSETTINGS=/prepress -dPDFA=1 -dPDFACompatibilityPolicy=1 |
| 解析度 300 dpi 以上 | -dPDFSETTINGS=/prepress (預設 300 dpi) |

