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

该博客介绍使用fitz库处理PDF文件。先说明了fitz库的安装注意事项,指出不能直接安装。在代码实现方面,提到PDF文件文字按文本框存储,关键是找到文本框,通过add_redact_annot()进行删除和修改操作,主要步骤为读取、定位、修改和保存文件。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

准备

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

 

Python中,可以使用第三方库如`PyPDF2`和`fpdf`来操作PDF文件并替换其中的文字。以下是基本步骤: 1. **安装所需库**: 首先,你需要通过pip安装这两个库: ``` pip install PyPDF2 fpdf ``` 2. **读取PDF**: 使用`PyPDF2`,你可以打开PDF文件,并访问页面的内容: ```python import PyPDF2 pdf_file = open('your_pdf.pdf', 'rb') reader = PyPDF2.PdfFileReader(pdf_file) page_obj = reader.getPage(0) # 获取第一页,根据需要调整页码 original_text = page_obj.extractText() ``` 3. **替换文本**: 替换你要更改的部分,然后设置新的文本: ```python new_text = "替换后的文本" replacement_start_index = original_text.find("旧的文本") # 找到旧文本的位置 if replacement_start_index != -1: # 如果找到旧文本 original_text = original_text[:replacement_start_index] + new_text + original_text[replacement_start_index+len("旧的文本"):] ``` 4. **写回PDF**: 再次将修改过的文本写回到PDF页面: ```python page_obj.updateText(original_text) writer = PyPDF2.PdfWriter() writer.addPage(page_obj) output_file = open('new_pdf.pdf', 'wb') writer.write(output_file) output_file.close() ``` 5. **使用fpdf替代**: 如果你更喜欢fpdf库,它处理文本的方式略有不同,但是核心原理是一样的。 注意:这只是一个基础示例,实际应用中可能还需要考虑字符编码、分页等问题。另外,对于大型PDF文件,一次性加载所有内容可能会消耗大量内存,这时可以考虑逐页处理。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值