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

问题描述 投票:0回答:1

我的问题归结为:我有一个Adobe Illustrator文件,该文件带有简单的图案,可以使用激光蚀刻到对象中。每个对象都有一个ID标记,到目前为止,在每次打印到激光之前都已经对其进行了手动编辑。我们想以编程方式进行此操作,因此我试图编写一个脚本,该脚本可以在文件中找到标记作为文本,然后替换并保存。

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

python pdf ghostscript vector-graphics adobe-illustrator
1个回答
0
投票

通常,这有点困难,因为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之后,所有出现的“文本”都将替换为“非文本”。

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

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

© www.soinside.com 2019 - 2024. All rights reserved.