2017-05-25 220 views
0

我們使用cairo編寫pdf文件。結果非常好,文件是可編輯的,所以我們可以通過複製&粘貼來提取文本,甚至可以在Adobe Illustrator和Inkscape中打開和編輯文件來更改字體屬性。如何將cairo-pdf轉換爲eps,而無需將字體轉換爲輪廓

但是,只要我們將PDF轉換爲EPS,所有字體都會轉換爲輪廓。

我最喜歡的工具是pdftopsGS,這是我想它的方式:

gs -sDEVICE=eps2write -dLanguageLevel=3 -dEmbedAllFonts=true -dNOPAUSE -dQUIET -dBATCH -sOutputFile=output.eps input.pdf 

pdftops -eps -level3 input.pdf output.eps 

另外我試過ps2eps,ps2epsi,epspdf和Inkscape中通過命令行,但結果始終相同,所有字體都轉換爲輪廓。

我們使用的是幻覺記憶的字體和字體嵌入似乎是OK:

$ pdffonts input.pdf 

name         type    encoding   emb sub uni object ID 
------------------------------------ ----------------- ---------------- --- --- --- --------- 
JTFVDF+DejaVuSans-Bold    TrueType   WinAnsi   yes yes yes  5 0 
BTWYHK+DejaVuSansCondensed-Bold  TrueType   WinAnsi   yes yes yes  6 0 
VIBPBS+DejaVuSans-Oblique   TrueType   WinAnsi   yes yes yes  7 0 
TKGUZX+DejaVuSansCondensed   TrueType   WinAnsi   yes yes yes  8 0 

不知道如何生產出可編輯的字體EPS-文件?

這裏是我的文件:https://www.dropbox.com/s/11afckra7i8trdq/input.pdf?dl=0

回答

1

的Ghostscript的eps2write設備不字體轉換爲輪廓。順便說一句,你怎麼知道字體被轉換成輪廓?

我會抓住的例子文件,你提供的與報到不久,我能想到的2個可能副手(榮譽的人的負載不這樣做!):

  • 該文件包含透明度。開羅有一些習慣創建PDF文件的習慣,這些文件包含實際上沒有做任何事情的透明度操作(比如將alpha設置爲100%)。您無法在PostScript中表示PDF透明度,因此整個頁面會呈現爲圖像。
  • 該文件是文本呈現模式3(既不是筆畫也不是填充)頂部帶有文本的圖像(或類似文件)。儘管實際的文本是不可見的,但Acrobat和其他應用程序通常會允許您剪切/粘貼它。但是,PostScript沒有這樣做的模式,並且由於文本沒有任何標記,通常只會被刪除。

[後來]

嗯,複雜的文件。解壓縮,這是> 11 MB ....

無論如何,頁面是一個透明度組:

9 0 obj 
<< 
    /Type /Page 
    /Parent 1 0 R 
    /MediaBox [ 0 0 720 720 ] 
    /Contents 3 0 R 
    /Group << 
    /Type /Group 
    /S /Transparency 
    /I true 
    /CS /DeviceRGB 
    >> 
    /Resources 2 0 R 
>> 
endobj 

但是它看起來像Ghostscript的決定作爲頁面不是一個完整的位圖的透明度,可以被丟棄。

EPS文件,我得到了沒有轉化爲輪廓的字體,它嵌入完整的字體,並使用它們,如:

8 0 obj 
<</BaseFont/ENTCOM+DejaVuSansCondensed-Bold/FontDescriptor 9 0 R/Type/Font 
/FirstChar 32/LastChar 220/Widths[ 
313 0 0 0 0 0 0 0 0 0 0 0 0 374 0 0 
0 0 0 0 0 626 626 626 0 0 0 0 0 0 0 0 
0 696 686 660 747 615 615 738 753 334 0 697 573 896 753 765 
659 765 693 648 614 730 696 993 0 0 0 0 0 0 0 0 
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 
0 0 0 0 0 0 0 0 0 0 0 0 730] 
/Encoding 20 0 R/Subtype/TrueType>> 
endobj 
%%EndResource 

9 0 obj 
<</Type/FontDescriptor/FontName/ENTCOM+DejaVuSansCondensed-Bold/FontBBox[-362 -176 964 927]/Flags 4 
/Ascent 745 
/CapHeight 745 
/Descent -176 
/ItalicAngle 0 
/StemV 144 
/MissingWidth 540 
/FontFile2 17 0 R>> 
endobj 
%%EndResource 
%%BeginResource: file (PDF FontFile obj_17) 
17 0 obj 
<</Filter/ASCII85Decode 
/Length1 6088/Length 7019>>stream 
!!*'"!"ApY!!<3t:K&o%z!!!e-!!!""@r5Xnz!!!\J!!!)[email protected]:5.NBR!!!#S!!!("AoMC">68U0 
!!!*T!!!##B5Dj*z!!!DJ!!!86BOtU_%6ag,!!!gs!!!!WBP:sc%JC""!!!,V!!!!EBPhj9z!!!f0 
..... 
Lots of data omitted 
..... 
!!)s8!!<3$zzzzzzz!!*'"!!6K:Z*:FC?Oo9l!$;IHze&!X4ze&!X4peC[h%QOi,!!*'*zz~> 
endstream 
endobj 

所以這是一個TrueType字體,這是後來使用:

10 0 0 10 0 0 cm BT 
/R8 12.96 Tf 
1 0 0 1 262.795 318.916 Tm 
[(N)1(E)1(US)0.998415(T)79.0063(ADT)1.00218]TJ 
126.609 339.675 Td 
[(F)1(IN)1.00218(DO)0.998415(R)1.00218(F)0.998415(F)1.00218]TJ 
-338.998 -203.387 Td 
[(W)1(O)1(L)166.005(T)1(M)1(E)1(R)1(S)1(H)1(A)29.9863(US)1(E)1(N)1]TJ 
373.499 -12.6809 Td 
[(M)0.998415(IT)-21.9915(T)0.998415(E)1.00218]TJ 
ET 

它可能是你使用的是舊版本,我使用的是當前版本9.21。如果沒有明確的問題會是'你爲什麼認爲字體是輪廓?'

+0

感謝您的檢查!我認爲字體轉換的原因很簡單,就是我無法在Inkscape或Illustrator中編輯它們。我只能看到輪廓,並且不可能編輯文本。 :(與解釋的代碼? –

+0

KENS,你有Inkscape中或Illustrator來檢查,如果你可以編輯未神韻:以曲線路徑文本元素Inkscape中和Illustrator的也許it'sa問題? –

+0

剛纔檢查我的版本,它的9.21。 –