如何批量自动修改PDF背景色?(PyMuPDF/ReportLab代码求助)
批量修改PDF背景色的自动化方案
方案一:纯PyMuPDF(fitz)实现(推荐)
无需额外依赖,直接用PyMuPDF给每一页添加底层背景色,逻辑简洁,适合批量处理。
完整代码:
import fitz import os # 配置参数 background_color = (185/255, 231/255, 186/255) # RGB值归一化到0-1范围 input_folder = "你的PDF文件夹路径" output_folder = "处理后输出文件夹" # 确保输出文件夹存在 os.makedirs(output_folder, exist_ok=True) # 遍历文件夹内所有PDF文件 for filename in os.listdir(input_folder): if filename.lower().endswith(".pdf"): input_path = os.path.join(input_folder, filename) output_path = os.path.join(output_folder, f"带背景_{filename}") # 打开输入PDF doc = fitz.open(input_path) # 给每一页添加背景色 for page in doc: rect = page.rect # 获取页面大小矩形 # 绘制背景(overlay=False确保在内容底层) page.draw_rect(rect, color=background_color, fill=background_color, overlay=False) # 保存处理后的PDF doc.save(output_path) doc.close() print(f"已处理:{filename} -> {output_path}") print("所有PDF处理完成")
关键说明:
overlay=False保证背景绘制在原内容下方,不会遮挡文字或图像- 颜色值需转换为0-1的浮点数,直接将RGB值除以255即可
- 批量处理逻辑通过遍历文件夹实现,可按需调整路径和命名规则
方案二:修正你的ReportLab+PyMuPDF代码
原代码错误地用ReportLab覆盖了输入PDF,正确逻辑是先生成单页背景PDF,再将原PDF的每一页与背景页合并:
import fitz from reportlab.lib.pagesizes import A4 from reportlab.pdfgen import canvas import os input_pdf_path = "input_pdf_path.pdf" output_pdf_path = "output.pdf" background_color = (185, 231, 186) temp_bg_pdf = "temp_background.pdf" # 生成单页背景PDF c = canvas.Canvas(temp_bg_pdf, pagesize=A4) c.setFillColorRGB(*[x / 255 for x in background_color]) c.rect(0, 0, A4[0], A4[1], fill=True) c.showPage() c.save() # 打开原PDF和背景PDF input_doc = fitz.open(input_pdf_path) bg_doc = fitz.open(temp_bg_pdf) output_doc = fitz.open() # 逐页合并背景与原内容 for page_num in range(input_doc.page_count): # 插入背景页到输出文档 output_doc.insert_pdf(bg_doc, from_page=0, to_page=0) # 将原PDF页的内容叠加到背景页上 output_page = output_doc[page_num] output_page.show_pdf_page(output_page.rect, input_doc, page_num) # 保存结果并清理临时文件 output_doc.save(output_pdf_path) output_doc.close() input_doc.close() bg_doc.close() os.remove(temp_bg_pdf) print(f"背景色修改完成,保存至:{output_pdf_path}")
批量扩展提示
若要批量处理,只需将上述合并逻辑嵌入方案一的文件夹遍历循环中即可。
内容的提问来源于stack exchange,提问作者LeoLaboi
相关产品推荐
相关产品推荐

