公司查保密,很多以前的PDF文件中存在“密”的文字都需要删除。
我现在想先尝试输入一个PDF文件路径后,能够用代码的方式将文件中的“密”替换成“哈”。经过了全网的查找和大量的尝试,结果发现网上已有的代码都是错的,至少没找到一个直接能用的。目前网上还没有这个问题的解决思路。
我根据网上查询的资料,也写了一段python代码,但无法将字符串类型的内容替换后,写入新的PDF中去,代码如下:
import PyPDF2
with open(r'C:\Users\lenovo\Desktop\1.2 10MW变压器冷却系统技术条件-扫描-20201208 - 副本.pdf', 'rb') as file:
pdf = PyPDF2.PdfReader(file)
num_pages = len(pdf.pages)
writer = PyPDF2.PdfWriter()
for page_num in range(num_pages):
page = pdf.pages[page_num]
content = page.extract_text().replace('密', '哈')
page.merge_page(content)
writer.add_page(page)
with open(r'C:\Users\lenovo\Desktop\11.pdf', 'wb') as output:
writer.write(output)
睿智的各位,有没有能解决这个问题的代码,可以联系我,有偿。
提供一个思路,你看行不行。
查找密的位置,在对应位置添加一个图片水印,这样可能会简单一点。
给PDF添加水印这个功能,应该是很常见的。
PyPDF2 库的限制导致替换功能无法正常工作。你可以尝试使用其他的 PDF 处理库,例如 PyMuPDF 【fitz】试试
看看这个Demo对你有没有帮助 pip install PyMuPDF
import fitz
input_path = r'C:\扫描副本.pdf'
output_path = r'C:\11.pdf'
doc = fitz.open(input_path)
for page in range(doc.page_count):
page_content = doc.load_page(page)
blocks = page_content.get_text("dict")["blocks"]
for block in blocks:
for line in block["lines"]:
for span in line["spans"]:
if "密" in span["text"]:
span["text"] = span["text"].replace("密", "哈")
doc.save(output_path)
doc.close()
【以下回答由 GPT 生成】
我可以帮助您解决这个问题。您所提供的代码有些问题,主要是在替换文字后无法将内容写入新的PDF文件。
要解决这个问题,您可以使用PyPDF2
库来读取和写入PDF文件,并使用reportlab
库来生成新的PDF。下面是一个可行的解决方案:
首先,确保您已经安装了PyPDF2
和reportlab
库。您可以使用以下命令来安装它们:
pip install PyPDF2
pip install reportlab
然后,使用以下代码来实现替换PDF文件中文字的功能:
from PyPDF2 import PdfReader
from reportlab.pdfgen import canvas
def replace_text_in_pdf(input_path, output_path, search_text, replace_text):
# 打开原始PDF文件
pdf = PdfReader(input_path)
# 获取PDF中的总页数
num_pages = len(pdf.pages)
# 创建一个新的PDF文件
c = canvas.Canvas(output_path)
for page_num in range(num_pages):
# 获取当前页面
page = pdf.pages[page_num]
# 提取页面内容
content = page.extract_text()
# 替换文本
replaced_content = content.replace(search_text, replace_text)
# 将替换后的内容绘制到新的PDF页面上
c.drawString(10, 10, replaced_content) # 这里使用drawString方法可以插入文字
# 添加新页面
c.showPage()
# 保存并关闭新的PDF文件
c.save()
# 指定输入和输出文件路径,以及要替换的文本
input_path = r'C:\Users\lenovo\Desktop\1.2 10MW变压器冷却系统技术条件-扫描-20201208 - 副本.pdf'
output_path = r'C:\Users\lenovo\Desktop\11.pdf'
search_text = '密'
replace_text = '哈'
# 调用替换函数
replace_text_in_pdf(input_path, output_path, search_text, replace_text)
请注意,drawString
方法可以用来将文本插入到新的PDF页面中。您可以根据需要调整该方法的参数,如x
和y
位置等。
这个解决方案使用PyPDF2
库来读取原始PDF文件,并使用reportlab
库来生成新的PDF文件并插入修改后的内容。希望这可以解决您的问题!如果您还有任何疑问,请随时向我提问。
【相关推荐】