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

PyMuPDF(fitz)双PDF页面50%透明度叠加失效问题求助

问题解决:PyMuPDF实现PDF页面半透明叠加

你的代码里show_pdf_page的alpha参数没生效,原因是直接插入原PDF页面后,叠加操作的上下文不对。换个思路:创建空白页,分别把两个PDF的页面渲染到这个空白页上,第二个页面设置50%不透明度。

修改后的代码如下:

import fitz  # PyMuPDF

# 打开输入PDF
pdf1 = fitz.open("file1.pdf")
pdf2 = fitz.open("file2.pdf")

output_pdf = fitz.open()

# 遍历每一页(兼容两个PDF页数不一致的情况)
for i in range(min(pdf1.page_count, pdf2.page_count)):
    page1 = pdf1.load_page(i)
    page2 = pdf2.load_page(i)
    page_rect = page1.rect  # 获取页面尺寸
    
    # 创建新的空白页,尺寸和原页面一致
    new_page = output_pdf.new_page(width=page_rect.width, height=page_rect.height)
    
    # 先渲染第一个页面(100%不透明度)
    new_page.show_pdf_page(page_rect, pdf1, pno=i, alpha=1.0)
    # 再渲染第二个页面,50%不透明度叠加在上面
    new_page.show_pdf_page(page_rect, pdf2, pno=i, alpha=0.5)

# 保存输出并关闭文件
output_pdf.save("output.pdf")
pdf1.close()
pdf2.close()
output_pdf.close()

关键改动说明

  • 不再使用临时PDF,直接在输出PDF里创建空白页,避免页面插入带来的上下文干扰
  • 分两步渲染页面:先铺底第一个全透明页面,再叠加半透明的第二个页面,确保透明度参数生效
  • 加入min(pdf1.page_count, pdf2.page_count)处理两个PDF页数不一致的场景,防止索引越界报错

内容的提问来源于stack exchange,提问作者Glooring

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.27 03:05:24