2017-05-25 164 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。 –