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

2024-05-16 14:52:16 发布

您现在位置:Python中文网/ 问答频道 /正文

我的问题归结为:我有一个Adobe Illustrator文件,其中有一个简单的图案,可以用激光蚀刻到物体上。每个对象都有一个ID标签,直到现在,在每次打印到激光器之前,该标签都已手动编辑。我们希望通过编程实现这一点,因此我尝试编写一个脚本,可以在文件中以文本形式找到标记,替换它,然后保存它

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


Tags: 文件对象方法文本id编辑pdf标签
1条回答
网友
1楼 · 发布于 2024-05-16 14:52:16

一般来说,这有点困难,因为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)

如果需要进行更复杂的查找和替换,可以阅读^{}

相关问题 更多 >