我试图专门更改由Adobe产品(如Illustrator或InDesign)生成的.EPS文件中的文本。无论出于何种原因,某些字体会被分成不同的行并移动一点点。它不是TrueType与OpenType的对象。
以下是一个例子,文字是" $$ tag1 $$":
%ADOEndSubsetFont
/ZDCMCB+NiagaraSolid-Reg /NiagaraSolid-Reg findfont ct_VMDictPut
/ZDCMCB+NiagaraSolid-Reg*1
[36{/.notdef}rp /dollar 12{/.notdef}rp /one 47{/.notdef}rp /a 5{/.notdef}rp /g
12{/.notdef}rp /t 139{/.notdef}rp]
ZDCMCB+NiagaraSolid-Reg nf
ZDCMCB+NiagaraSolid-Reg*1 [9 0 0 -9 0 0 ]msf
264.206 109.1 mo
($$t)sh
270.916 109.1 mo
(ag1$$)
[2.42188 2.51758 1.45117 2.53906 0 ]xsh
这是一个没有破坏的例子,文本是" $$ tag1 $$":
%ADOEndSubsetFont
/ZDCMCC+Utsaah-BoldItalic /Utsaah-BoldItalic findfont ct_VMDictPut
/ZDCMCC+Utsaah-BoldItalic*1
[36{/.notdef}rp /dollar 13{/.notdef}rp /two 46{/.notdef}rp /a 5{/.notdef}rp /g
12{/.notdef}rp /t 139{/.notdef}rp]
ZDCMCC+Utsaah-BoldItalic nf
ZDCMCC+Utsaah-BoldItalic*1 [9 0 0 -9 0 0 ]msf
264.206 118.1 mo
($$tag2$$)sh
%ADOBeginSubsetFont: Garamond-Bold Initial
%ADOt1write: (1.0.24)
我们使用PHP交换变量并使用新值重新保存文件。问题是我们无法可靠地确定文本将在何处中断,如果确实存在,我们无法替换它,或者在尝试将文本转换为类似PDF的文件时文件会出错。
非常感谢任何帮助!
答案 0 :(得分:3)
产品生成的后记通常 - 就像是这样 - 不是可读或可编辑的。
作为一个功能齐全的语言,如果确实从头开始或多或少地创建了一个postscript文件,它最终会比上面的示例更具可读性,在这种情况下,它是可编辑的。
Postscript本身并不难 - 因为你正在生成一个EPS,也许你可以更容易地将所有文本生成部分作为人工生成的代码片段,而不是像上面那样依赖自动生成的代码。你将失去一些排版细节,因为每个字母对之间的距离似乎是计算(在postscript之外)和上面的硬编码。您可能只想保留EPS文件的剩余部分并替换“文本核心”部分 - 然后,maiking会调整为人类可读的部分,就像在任何语言的常规程序中一样。
示例渲染可能如下:
%!PS-Adobe EPSF-3.0
%%BoundingBox: 0 0 800 200
(VeraSeeBd.ttf) findfont 70 scalefont setfont
10 10 moveto
(Hello World!) show
从那里标记文本中断要容易得多。 如果你想要更复杂的东西,并有postscrit来照顾 换行自身,而不是从生成器代码估计, 它是可能的 - 但你必须将这个逻辑编码到postscript本身。