python轻松去除pdf文件中的水印,还可以将水印修改为想要的文字——fitz

准备

使用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文件处理的一个小问题...

猜你喜欢

转载自blog.csdn.net/qq_52529296/article/details/132285020