You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何编写脚本移除PowerPoint导出PDF中的遮罩白色矩形?

移除PowerPoint导出PDF中的白色遮盖矩形脚本方案

PPT导出的PDF中,遮盖文本的白色矩形属于PDF的图形路径对象,PyPDF2对这类元素的支持有限,推荐使用PyMuPDF(别名fitz)来处理,它能直接操作页面的图形内容,实现批量移除白色矩形的需求。

实现步骤

  1. 安装依赖库

    pip install pymupdf
    
  2. 核心脚本代码

    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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.23 18:52:36