上午篡了一个PDF去水印的Python脚本,全代码

发布于: 修改于: 雪球转发:0回复:0喜欢:0

想把UE5捡起来,因为蓝图交互前年已经学得差不多了,前天开始学CPP。 今天上午想复习一下用Python的感觉,偷着通过秘塔和KIMI配合C+V凑了一个,亲测还挺好用。

#没想到雪球会自动将左侧缩进符全都删掉。。。

import os

import fitz # PyMuPDF

from itertools import product

def remove_pdf(pdf_dir, save_dir, file_name, upscale_factor=2):

# 确保保存目录存在

if not os.path.exists(save_dir):

os.makedirs(save_dir)

pdf = fitz.open(pdf_dir)

pdf2 = fitz.open() # 创建一个新的PDF文档用于存储处理后的页面

page_num = 0

for page in pdf:

# 使用upscale方法增加像素映射的尺寸

pixmap = page.get_pixmap(matrix=fitz.Matrix(upscale_factor, upscale_factor))

# 去除水印

for pos in product(range(pixmap.width), range(pixmap.height)):

rgb = pixmap.pixel(pos[0], pos[1])

r, g, b = rgb

if r<g+b and sum(rgb) >= 602:

pixmap.set_pixel(pos[0], pos[1], (255, 255, 255))

# 保存为PNG图片,使用无损压缩

img_path = os.path.join(save_dir, f"page_{page_num}.png")

pixmap.save(img_path) # 默认保存为PNG格式

# 将PNG图片转换回PDF格式

imgdoc = fitz.open(img_path)

pdfbytes = imgdoc.convert_to_pdf()

imgpdf = fitz.open("pdf", pdfbytes)

pdf2.insert_pdf(imgpdf)

# 清理:删除PNG图片文件

imgdoc.close()

os.remove(img_path)

print(f"第 {page_num + 1} 页水印去除完成")

page_num += 1

# 保存最终的PDF文档

final_pdf_path = os.path.join(save_dir, file_name)

pdf2.save(final_pdf_path)

print(f"最终PDF文件已保存至: {final_pdf_path}")

pdf2.close()

# 指定输入文件夹

input_folder = "D:\工作\工作/3.项目\PDF去水印\Target"

for file in os.listdir(input_folder):

if file.endswith(".pdf"):

n=1

pdf_file = os.path.join(input_folder, file)

save_dir = r'D:\工作\工作/3.项目\PDF去水印\Output'

file_name = f" {file}"

remove_pdf(pdf_file, save_dir, file_name, upscale_factor=2)