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

Replacing text in .ai, .pdf, .eps etc for print in Python

我的问题归结为:我有一个 Adob​​e Illustrator 文件,其中有一个简单的图案,可以用激光蚀刻到一个物体上。每个对象都有一个 ID 标签,直到现在在每次打印到激光之前都需要手动编辑。我们想以编程方式执行此操作,因此我正在尝试编写一个脚本,该脚本可以在文件中找到标签作为文本,替换它,然后保存它。

文件类型是灵活的,只要它是基于矢量的,语言也是如此。我只是最熟悉 Python。到目前为止,我还没有找到可以简单地打开 .pdf、替换一些文本然后保存的模块。我得到的最接近的是使用 sublime text 手动编辑 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