准备
使用fitz进行pdf文件的读取及操作。
fitz库的安装:
注意不是直接安装fitz
pip install PyMuPDF
代码实现
pdf文件中文字是按文本框的形式存储,关键是找到相应的文本框。
再使用add_redact_annot()进行删除和修改操作。
主要步骤:读取原pdf文件-->查找定位文字-->删除(修改)对应文本框-->保存文件
import fitz
import json
'''
pdf_file:输入文件
output_file:输出文件
keyword:需要删除或修改的文本框
modify:需要修改成的目标文字(str),默认为False表示删除原来文本
'''
def modify_pdf(pdf_file, output_file, keyword, modify=False):
doc = fitz.open(pdf_file)
for page in doc:
# 查看数据结构
# print(page.get_text('json'))
# 找出需要改动的文本框
info = json.loads(page.get_text('json'))
for block in info['blocks']:
try:
for line in block['lines']:
for span in line['spans']:
# 除去空格,方便查找文本
text = span.get('text', '').replace(' ', '')
# print(text)
if text == keyword:
key = span
if modify == False:
# 删除指定文本
page.add_redact_annot(key['bbox'])
page.apply_redactions()
else:
# 修改
page.add_redact_annot(key['bbox'], modify, fontname='china-s', fontsize=key['size'])
page.apply_redactions()
except KeyError:
continue
# 保存为新文件
doc.save(output_file)
doc.close()
pdf_file = 'testfile/f2.pdf'
output_file = 'testfile/f3.pdf'
text = modify_pdf(pdf_file, output_file, "需要删除的文字")
遵循着万物皆可Py的原则,又解决了pdf文件处理的一个小问题...