python去除pdf水印
项目文件夹结构
D:.
│ remove_pdfwatermark.py
│
└─PDFimages
python代码
from itertools import product
import fitz
import os
# 该函数用于去除pdf的水印
# 输入:待去除图片的pdf文件
# 输出:去除水印后的图片
def remove_pdfwatermark():
# 在项目根文件夹下打开源pdf文件
pdf_file = fitz.open("./待去除水印的pdf文件.pdf")
page_no = 0
for page in pdf_file:
pix = page.get_pixmap()
for pos in product(range(pix.width), range(pix.height)):
if sum(pix.pixel(pos[0], pos[1])) >= 615: # 将这里的615替换成要去除的水印rgb值
pix.set_pixel(pos[0], pos[1], (255, 255, 255))
# 将去除水印后的图片保存到根文件夹下的PDFimages文件夹中,并以页码命名
pix.pil_save(f"./PDFimages/{page_no}.png", dpi=(30000, 30000))
print(f"第 {page_no} 页去除完成")
page_no += 1
# 该函数用于将去除好水印的图片转换为pdf文件
# 输入:当前文件夹下的图片
# 输出:去除水印后的pdf
def pictopdf():
# 设置路径为去除水印后的图片保存路径
pic_dir = "./PDFimages"
pdf = fitz.open()
img_files = sorted(os.listdir(pic_dir), key=lambda x: int(str(x).split(".")[0]))
for img in img_files:
print(img)
imgdoc = fitz.open(pic_dir + "/" + img)
pdfbytes = imgdoc.convertToPDF()
imgpdf = fitz.open("pdf", pdfbytes)
pdf.insertPDF(imgpdf)
pdf.save("去除水印后的pdf文件.pdf") # 保存的pdf名
pdf.close()
if __name__ == "__main__":
remove_pdfwatermark()
pictopdf()
安装依赖
pip install PyMuPDF
pip install pillow
参考资料
https://blog.csdn.net/wuyoudeyuer/article/details/123084385
https://cloud.tencent.com/developer/article/1524704
https://blog.csdn.net/weixin_44037416/article/details/96842058
注意事项
该代码的原理是将pdf转换为图片,然后在图片上滤除水印的像素,最后将图片合并为pdf。所以最后得到的是图片。
因此如果你最后想得到的是文字版的pdf,请参考如下链接来安装pdf编辑器
本文作者:tiansz
本文链接:https://www.cnblogs.com/tiansz/p/16332068.html
版权声明:本作品采用知识共享署名-非商业性使用-禁止演绎 2.5 中国大陆许可协议进行许可。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步