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

源PDF MediaBox异常导致ReportLab水印与PyPDF2合并后旋转90度求助

解决PDF水印旋转错位问题(ReportLab + PyPDF2)

问题核心

源PDF和水印PDF的页面方向定义逻辑不一致:

  • 源PDF:以纵向MediaBox(2384×5102)为基础,通过Rotate 90属性实现横向显示
  • 水印PDF:直接使用横向MediaBox(5102×2384),Rotate属性为0

PyPDF2合并时会严格遵循PDF的原始属性,导致两者叠加出现90度旋转错位。


解决方案一:调整水印PDF属性匹配源PDF

生成水印时,采用和源PDF一致的纵向MediaBox,再通过Rotate属性实现横向显示,确保两者属性完全对齐。

from reportlab.pdfgen import canvas
from reportlab.lib.pagesizes import A0
from PyPDF2 import PdfReader, PdfWriter

# 1. 生成匹配源PDF属性的水印
# 用纵向A0尺寸(和源PDF的MediaBox一致)
c = canvas.Canvas("watermark.pdf", pagesize=A0)
# 旋转画布90度,确保水印内容横向显示
c.rotate(90)
# 绘制水印内容(示例为文本,可替换为其他元素)
c.drawString(1000, 500, "自定义水印文本")
c.save()

# 2. 合并PDF并统一Rotate属性
source_reader = PdfReader("source.pdf")
watermark_reader = PdfReader("watermark.pdf")
writer = PdfWriter()

source_page = source_reader.pages[0]
watermark_page = watermark_reader.pages[0]

# 将水印页面的Rotate设为90,和源PDF一致
watermark_page.Rotate = 90

# 叠加页面
source_page.merge_page(watermark_page)
writer.add_page(source_page)

with open("merged.pdf", "wb") as f:
    writer.write(f)

解决方案二:调整源PDF属性匹配水印PDF

如果不想修改水印生成逻辑,可将源PDF转换为和水印一致的横向定义(Rotate=0 + 横向MediaBox)。

from PyPDF2 import PdfReader, PdfWriter

source_reader = PdfReader("source.pdf")
watermark_reader = PdfReader("watermark.pdf")
writer = PdfWriter()

source_page = source_reader.pages[0]
watermark_page = watermark_reader.pages[0]

# 重置源页面的Rotate属性为0
source_page.Rotate = 0
# 交换MediaBox的宽高,适配横向尺寸
mediabox = source_page.mediabox
source_page.mediabox.upper_right = (mediabox.height, mediabox.width)

# 叠加页面
source_page.merge_page(watermark_page)
writer.add_page(source_page)

with open("merged.pdf", "wb") as f:
    writer.write(f)

关键注意事项

  • 合并前必须确保两个页面的MediaBox尺寸和Rotate属性完全一致,否则会出现错位、缩放问题
  • 可通过以下代码打印页面属性,验证修改是否生效:
print(f"源页面MediaBox: {source_page.mediabox}")
print(f"源页面Rotate: {source_page.Rotate}")
print(f"水印页面MediaBox: {watermark_page.mediabox}")
print(f"水印页面Rotate: {watermark_page.Rotate}")

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.20 08:06:50