替换.ai、.pdf、.eps等中的文本以在Python中打印



我的问题归结为:我有一个Adobe Illustrator文件,里面有一个简单的图案,要用激光蚀刻到物体上。每个对象都有一个ID标签,到目前为止,在每次打印到激光之前,该标签都经过手动编辑。我们想通过编程实现这一点,所以我试图编写一个脚本,可以在文件中找到标记作为文本,替换它,然后保存它。

文件类型是灵活的,只要它是基于向量的,语言也是如此。我只是对Python最熟悉。到目前为止,我还没有找到一个模块,可以简单地打开.pdf,替换一些文本,然后保存它。我得到的最接近的方法是使用卓越的文本手动编辑pdf中的文本。我处理这个问题的方法是错误的吗?如果是,还有更好的解决方案吗?非常感谢。

一般来说,这有点困难,因为PDF文件有关于文本字符串放置位置的信息。如果你想添加一个句子,你必须手动将文本的其余部分移动到正确的位置,这样它才能工作。但是,如果您只想更改一个单词,并且正如您所说,可以通过在编辑器中更改文本来完成,则可以使用简单的替换。

我抓了一小部分PDF样本来说明:

import re
s = '''BT 
/F1 0010 Tf 
69.2500 628.8480 Td 
( And more text. And more text. And more text. And more text. And more ) Tj 
ET 
BT 
/F1 0010 Tf 
69.2500 616.8960 Td 
( text. And more text. Boring, zzzzz. And more text. And more text. And ) Tj 
ET 
BT 
'''
changed_s = re.sub('text', 'NOT-TEXT', s)

在此片段之后,changed_s将所有出现的"text"替换为"NOT-text"。

要将其应用于文件,您可以执行以下操作:

import re
# Read from file
# Even better: SVG or illustrator file
with open('filename.pdf', 'r') as f:
file_text = f.read()
# Perform substitution
changed_text = re.sub('to-change', 'change-to', file_text)
# Write to file
with open('outfile.pdf', 'w') as f:
f.write(changed_text)

如果你需要做更多的查找和替换,你可以在re.sub上阅读。

最新更新