想把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)