import time
from PIL import Image, ImageDraw
import fitz # PyMuPDF
import os
from PIL import Image
from PyPDF2 import PdfMerger
def pdf_to_images(pdf_path, output_folder):
img_paths = []
doc = fitz.open(pdf_path) # 打开PDF文件
for page_num in range(len(doc)): # 逐页处理
page = doc.load_page(page_num)
pix = page.get_pixmap(dpi=300) # 设置DPI(默认96)
output_path = f"{output_folder}/page_{page_num+1}.png"
pix.save(output_path) # 保存为PNG格式
img_paths.append(output_path)
doc.close()
return img_paths
# cs扫描王(2135, 3365, 2440, 3470)
# 扫描全能王
def qsysb(img_path, out_path):
# 打开图片
img = Image.open(img_path)
draw = ImageDraw.Draw(img)
rect_area = (1800, 3300, 2440, 3470) # 示例坐标
# 绘制白色矩形(RGB:255,255,255)
draw.rectangle(rect_area, fill=(255, 255, 255))
# 保存结果
img.save(out_path)
def qsyhb(img_path, out_path):
# 打开图片
img = Image.open(img_path)
draw = ImageDraw.Draw(img)
rect_area = (2800, 2100, 3460, 4000) # 示例坐标
# 绘制白色矩形(RGB:255,255,255)
draw.rectangle(rect_area, fill=(255, 255, 255))
# 保存结果
img.save(out_path)
# 合并文件夹内的图片,生成pdf
def images_to_pdf(folder_path, output_pdf, image_files):
# 创建临时PDF文件列表
temp_pdfs = []
# try:
# 将每张图片转换为单独的PDF
for i, image_file in enumerate(image_files):
output_temp = os.path.join(folder_path, f"temp_{i}.pdf")
image = Image.open(image_file)
if image.mode == 'RGBA':
image = image.convert('RGB')
image.save(output_temp, "PDF", resolution=100.0)
temp_pdfs.append(output_temp)
# 合并所有临时PDF
merger = PdfMerger()
for pdf in temp_pdfs:
merger.append(pdf)
merger.write(output_pdf)
merger.close()
print(f"PDF文件已成功生成: {output_pdf}")
pdf_path = "F:/新建文件夹/扫描.pdf"
output_folder = "F:/新建文件夹/a"
# 1、将pdf转化为图片,并获取所有图片的信息
img_paths = pdf_to_images(pdf_path, output_folder)
# 2、创建一个文件夹存放去水印的图片
folder_path = output_folder + "/" + "qsy"
if not os.path.exists(folder_path):
os.makedirs(folder_path)
print(f"文件夹 '{folder_path}' 创建成功!")
else:
print(f"文件夹 '{folder_path}' 已存在。")
# 3、将所有的图片去掉水印
out_address = []
for img_path in img_paths:
img = Image.open(img_path)
out_paths = img_path.split(".")
out_path = out_paths[0] + "qsy" + "." + out_paths[1]
if img.width < img.height:
qsysb(img_path, out_path)
else:
qsyhb(img_path, out_path)
out_address.append(out_path)
# 4、将去水印的图片合成pdf
# time.sleep(150)
output_pdf = folder_path + "/cs去水印.pdf"
images_to_pdf(folder_path, output_pdf, out_address)