如何编写脚本移除PowerPoint导出PDF中的遮罩白色矩形?
移除PowerPoint导出PDF中的白色遮盖矩形脚本方案
PPT导出的PDF中,遮盖文本的白色矩形属于PDF的图形路径对象,PyPDF2对这类元素的支持有限,推荐使用PyMuPDF(别名fitz)来处理,它能直接操作页面的图形内容,实现批量移除白色矩形的需求。
实现步骤
安装依赖库
pip install pymupdf核心脚本代码
import fitz # 导入PyMuPDF库 def remove_white_rectangles(input_pdf, output_pdf): # 打开目标PDF文档 doc = fitz.open(input_pdf) for page in doc: # 获取当前页面所有图形绘制元素 drawings = page.get_drawings() target_rects = [] for draw in drawings: # 筛选填充类型的图形(矩形多为填充路径) if draw["type"] != "f": continue # 判断填充色是否为白色(RGB值接近(1,1,1),兼容浮点精度误差) fill_color = draw["fill"] if not fill_color: continue r, g, b = fill_color[:3] if abs(r-1) < 0.01 and abs(g-1) < 0.01 and abs(b-1) < 0.01: # 确认图形为矩形(路径由4条直线+闭合指令组成) path_items = draw["items"] if len(path_items) == 5 and all(item[0] == "l" for item in path_items[:4]) and path_items[4][0] == "c": target_rects.append(fitz.Rect(draw["rect"])) # 覆盖移除白色矩形(用透明区域覆盖原矩形) for rect in target_rects: page.draw_rect(rect, fill=None, color=None, width=0) # 保存处理后的PDF doc.save(output_pdf) doc.close() # 调用示例 remove_white_rectangles("原始文档.pdf", "清理后文档.pdf")
关键说明
- 筛选逻辑:通过图形类型(填充路径)、填充色(白色)、路径结构(矩形闭合路径)三个维度定位目标矩形
- 兼容调整:如果PPT导出的白色不是纯RGB(1,1,1),可以放宽颜色判断的阈值;若矩形有白色描边,需额外检查
draw["color"]参数 - 进阶优化:如果需要精准匹配遮盖文本的矩形,可以结合
page.get_text("words")获取文本位置,判断矩形是否与文本区域重叠后再移除
内容的提问来源于stack exchange,提问作者Akilan Manivannan
相关产品推荐
相关产品推荐

