我确实有以下PostScript代码内容,这些内容最初是由Windows XP上的Ghostscript打印机生成的。
/Euro /Times-BoldItalic /Times-BoldItalic-Copy BuildNewFont
} if
F /F1 0 /256 T /Times-BoldItalic mF
/F1S52 F1 [82.664 0 0 -82.664 0 0 ] mFS
F1S52 Ji
581 547 M (This is just a little test content)[55 42 42 23 46 37 42 37 28 21 51 42 21 51 46 42 32 66 42 21 60 42 55 21 21 21 55 37 32 46 55 42
23 0]xS
;
我只是想编辑文本,但如果我尝试更改括号之间的文本,无论新文本是长还是短,文本都会失真。
我试图了解上面的代码是做什么的,但我没有为此找到适当的文档。
你能帮我理解一下代码 - 尤其是以'581'开头的行,以及如何在不破坏布局的情况下编辑文本?
提前谢谢!
PS:我需要这个用于自动交换某些段落的python脚本,因此我不会寻找用于编辑的第三方工具,PDF编辑工具或类似的东西;)
答案 0 :(得分:2)
以'581'开头的行显然移动到581 547点,然后以某种方式推送xS
使用的字符串和数组。我怀疑xS
是使用该数组的show
的扩展版本,但我不知道如何。您必须查看PS文件的开头才能找到xS
的定义。同样mFS
似乎是一种转换,因为它得到了一个矩阵。
无论如何,如果PS文件包含排版文本,那么你不可能在不打破排版的情况下更改其中的文本。
答案 1 :(得分:2)
xS
几乎肯定只是xshow
,它取字符串和数组并使用数组来确定文本。您可以使用简单的show
替换文本。你看到的地方:
(This is just a little test content)[...]xS
将其替换为:
(This is my replacement content) show
您文件的序言部分会有一些show
的简写名称,但您不必使用它。该文本可能仍然不适合,但如果您只是更改表单中的条目或同等隔离的内容(标题,脚注等),它可能会没问题。
如果你想获得幻想,你可以利用PostScript是一种成熟的编程语言这一事实。您可以编写一个函数来确定旧字符串的宽度(对于此xshow
,您将找到数组最后一个元素的右边缘加上字符串最后一个字符的stringwidth
,然后计算新字符串的长度(stringwidth
),然后使用ashow
将字符串挤压/拉伸到其位置。
答案 2 :(得分:1)
我同意@lhf。你真的应该在postscript级别进行这种编辑“上游”。无论源应用程序是什么,都需要脚本生效。如果应用程序没有本机脚本,那么您仍然可以使用WinBatch之类的东西与它进行交互。我已经使用WinBatch制作宏向导来向telnet3270客户端提供击键:通过交互式系统启用“批量”操作。对于unix,我们期待。