[Latex] 所有字體embedded: Type3 PDF文檔處理 / True Type轉換為Type 1


目錄:

[正文] Adobe Acrobat打印解決字體嵌入問題

[Appendix I] Type3轉TRUE Type/Type 1 

[Appendix II] TRUE Type轉Type 1 (並embedded)

 

================================

准備提交給ACM與IEEE的論文時,我們手頭的文檔除了有明確具體字體類型的Type1和TrueType字體外,還經常會出現Type3字體,這種字體現在在雜志印刷過程中是不予接受的。

Type 3 字體是矢量外框字體,很多網站所稱Type 3是點陣字體其實是錯誤的。不同於 Type 1,PostScript Type 3 字體不支援 Hinting,該技術優化了小字型的字形狀,意味着 PostScript Type 1 在低解析度的雷射印表機或是熒幕上的品質表現略勝一籌。[1][2]

Latex不能精確識別的字體也會被歸類到Type 3。這種字體在印刷刊物中有可能出現印刷錯誤,編譯為.dvi文件時也有幾率發生錯誤。Type 3基本上已經被淘汰,在正式文檔中是需要盡量規避的。

實際上重新打印就能解決。

 

Adobe Acrobat打印解決字體嵌入問題

1. 定位問題:

下載Adobe Acrobat進行查看以及后續的嵌入 (注意!不是Abobe Reader!)

Adobe Acrobat 9.0的無需激活破解版比較好找,以下是雲盤鏈接:

https://pan.baidu.com/s/12XD5YfaxCmB9L2cvVLugXA

http://pan.baidu.com/share/link?uk=1579679242&shareid=2902479474

https://www.panc.cc/s/[Acrobat.9.].APRO9_Win_ESD1_CS

 

安裝后,用Adobe Acrobat打開pdf,然后打開 文件-> 屬性,會看到沒有嵌入的字體

 

 

2. 嵌入字體

文件-> 打印 -> 打印機選adobe pdf -> 點選旁邊的屬性

 

在 adobe pdf設置 選項卡里,第一行找到 默認設置,點出下拉菜單,選高質量打印,點擊OK

另:順便查看下頁面大小(有些論文要求必須是Letter而不是A4),是否添加文檔信息(雙盲會議有些會要求pdf中不能包含任何文檔信息,以防泄露作者身份)

 

打印,所有type 3和true type都將被轉換為type 1,問題解決

 

 

 另外,如果遇到保存時無法保存pdf,而是保存ps格式的情況,可能是distiller沒有啟動。可以手動在本地window應用搜索distiller,打開Acrobat Distiller后將ps文件轉換回pdf

https://helpx.adobe.com/cn/acrobat/using/creating-pdfs-acrobat-distiller.html#creating_pdfs_with_acrobat_distiller

Acrobat Distiller 概覽

在“Acrobat Distiller”中,您可以選擇用於將文檔轉換為 PDF 的設置、安全性選項和字體信息。您也可以使用“Acrobat Distiller”窗口來監視您布置的 PDF 轉換作業。

Acrobat Distiller 窗口
Acrobat Distiller 主窗口 (Windows)

A. 菜單 B. Adobe PDF 設置文件 C. 工作隊列里的文件 D. 失敗的作業 E. 上下文菜單 F. 狀態窗口 

 

 

 

 

 

 

================================

下面是一些以前的老辦法,相比更加麻煩也不一定能起作用,僅供必要(如以上做法失效)時參考

Appendix I

一、Type3 文件的識別

1、整體識別

1)閱讀器

用adobe/foxit 等reader打開pdf文件,"文件 -> 屬性" 打開屬性對話框,找到“字體”項目,可以看到pdf所包含的字體信息。通常如果有type3,會直接顯示在最前面。

 

2)Linux下使用命令

要檢查PDF文件中包含了,或者使用了什么字體,你可以使用命令行工具:pdffonts。它是一個PDF字體分析工具。pdffonts是Poppler PDF工具集包中的一個部分。

a) 直接使用命令 [5]

  pdffonts可以列出PDF文檔中使用的所有字體。

  pdffonts的基本用法: pdffonts paper.pdf

  pdffonts工具顯示了各個已使用的字體的各種信息,如字體名稱/類型等等。看輸出是否含有type3字體。

b) linux下安裝命令支持包

  要安裝Poppler到Debian,Ubuntu或Linux Mint:

  1. $ sudo apt-get install poppler-utils

  要安裝PDF工具集到FedoraCentOS或RHEL:

  1. $ sudo yum install poppler-utils

  pdffonts可以列出PDF文檔中使用的所有字體。pdffonts的基本用法如下。

  1. $ pdffonts doc.pdf

 

2、問題定位

1)Windows

先注釋全文,編譯latex,查看生成pdf內字體類型,通常是type1。

然后逐章解開注釋,編譯latex,查看生成pdf內字體類型,直到出現type3。

再於沒問題的上一章和有問題的這一章之間逐步注釋並編譯查看,直到定位到type3所在。

 

2)Linux

如果一個PDF文檔有多頁,你可以使用“-f”(首頁)和“-l”(末頁)選項來限制字體掃描頁面范圍。例如,如果你想要找出某個文檔中的5-10頁中使用了哪種字體,運行該命令 $ pdffonts -5-10 doc.pdf

 

二、Type3 文件的處理

1)整體處理

a)先考慮官方的建議,在文件頭部加入以下命令(T1包含在cm-super宏包中 [4])並重新編譯 [5]:

    \usepackage[T1]{fontenc}

    \usepackage{aecompl}

    筆者的離線latex不支持這兩種包,會出現錯誤。

b)安裝cm-super宏包

    Tex -> MikTex -> MikTex Package Manager -> 在name中尋找所需的包並安裝

問題依舊的話,應該是插圖中含有type3字體。 比如用Python或Matlab畫圖,默認的似乎就是輸出成type3 [5],那么往下看2)。

 

2)對已有圖片的處理

Python和Matlab生成的圖片字體,默認輸出就是Type3。有幾種可能的處理方法:

a) eps2eps [3][5]

   eps2eps命令是包含在texlive發行版中的小工具,它能把一個eps圖片中字體全部曲線化,轉換后的eps再轉成pdf時,不帶任何字體信息。

   所以我們可以將出問題的圖片(如果是eps格式)用eps2eps轉換一遍。

   用法:Accessories -> Command Prompt 打開命令行,接着 eps2eps your.eps output.eps

   但是,有人指出這樣圖片會變得不清晰;筆者這里是出現圖片會被部分截取的情況。

b) epstopdf, pdftops [5]

   先轉成pdf再轉回eps, 比如對fig.eps, Accessories -> Command Prompt 打開命令行, 然后使用命令:

     epstopdf fig.eps fig.pdf
     pdftops -eps -r 400 fig.pdf fig.eps

    筆者這邊是出現pdftops命令不兼容的情況。

c) convert-to-eps website

    將問題圖片上傳至http://image.online-convert.com/convert-to-eps,下載下來也是eps,但字體也會被曲線化,從而使得圖片不再是type3。注意圖片會增大到數MB。

    這個比較好使,多次解決了筆者的問題。

    但其中有一次圖片實在太多,並且我們使用有編譯時間限制的在線latex,從而出現了超時問題。詳細解決方法和討論傳送門:http://www.cnblogs.com/zeedmood/p/8991821.html

 

三、Python的處理

比如用python畫圖,默認就是輸出成type3 [5]

修改 ~/.matplotlib/matplotlibrc

加入(或者修改)如下兩行
ps.fonttype : 42 # Output Type 3 (Type3) or Type 42 (TrueType)
pdf.fonttype : 42 # Output Type 3 (Type3) or Type 42 (TrueType)

 

四、Adobe Acrobat

Adobe Acrobat另存為的優化pdf格式,也可以用於去除Type 3 ,但最好設置下分辨率,避免圖的質量過分下降。可以改成以下設置:

 

 

 

Reference

[1] PostScript fonts https://en.wikipedia.org/wiki/PostScript_fonts#Type_3 

[2] 請問Type3字體有什么特別? http://www.cnprint.org/bbs/thread/165/180556/ 

[3] origin作圖,避免里面有Type 3 字體 http://www.cnblogs.com/pankejia/p/3476432.html

[4] How to generate pdf without any Type3 fonts? http://tex.stackexchange.com/questions/18687/how-to-generate-pdf-without-any-type3-fonts

[5] 提交MNRAS的pdf文件中type3字體問題 http://asc.2dark.org/node/188

 

================================================================

Appendix II: True Type轉換為Type 1

某些會議(如 INFOCOM等使用EDAS系統的)還會要求將TRUE Type轉換為Type 1 或者要求全部字體都需要embedded。

The paper PDF file cannot be accepted: Publishers require that PDF fonts are embedded so that documents can be printed everywhere; one or more of your document fonts are not embedded

 

首先,定位問題:

下載Adobe Acrobat進行查看以及后續的嵌入 (注意!不是Abobe Reader!)

Adobe Acrobat 9.0的無需激活破解版比較好找,以下是雲盤鏈接:

http://pan.baidu.com/share/link?uk=1579679242&shareid=2902479474

https://www.panc.cc/s/[Acrobat.9.].APRO9_Win_ESD1_CS

安裝后,用Adobe Acrobat打開pdf,然后打開 文件-> 屬性,會看到沒有嵌入的字體

 

打開另存為->保存為pdf(優化)->設置

 

可以再次確認是沒有字體嵌入的

 

 

解決方法: 

(1)True Type圖片將矢量圖轉換為位圖,去除文字

有些軟件的矢量圖,如Visio,其生成的圖片pdf就經常有True Type文字;

一個簡單的方法,就是定位到有True Type的圖片后(通常是矢量圖),將其轉換為位圖(如JPG、BMP),如果文章中格式有需要可以再轉換回pdf(當然,這樣依然是位圖)。為了保證放大后的清晰度,盡量選擇不要壓縮

Visio保存成JPG或者BMP就不是矢量圖了,沒有內嵌文字,自然也不會有True Type。JPG轉PDF可以用這個網站:http://jpg2pdf.com/

 

這個方法優點是簡單粗暴,而且每個圖基本都比較清晰

缺點是需要一個圖一個圖弄,而且圖中的文字無法搜索到

 

(2)使用Adobe Acrobat的打印功能,將True Type轉為Type 1

優點是一次通殺,不需要逐個去改;通常矢量圖也能保留

缺點是有些原本就是位圖的圖片,被打印后容易出現不清晰的情況

 

用Adobe Acrobat中打印,在高級-> PostScript選項中點開其 “將TRUE Type轉Type 1” 功能即可

可以看到新文檔已經沒有TRUE Type類型了

 打開另存為->保存為pdf(優化)->設置

 

可以再次確認字體已經嵌入了

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM