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

使用pypdf 5.1.0合并PDF时MediaBox与CropBox属性异常导致内容不可见的问题求助

pypdf 5.1.0合并PDF时MediaBox与CropBox属性异常导致内容不可见的问题求助

大家好,我最近在用pypdf 5.1.0版本合并PDF文件时遇到了个头疼的问题——合并后的PDF内容居然是不可见的!排查半天后发现,问题出在页面的MediaBox和CropBox属性上。

异常的属性值是这样的:

/MediaBox [ 0 0 595 842 0 0 595 842 0 0 595 842 ]
/CropBox [ 0 0 595 842 0 0 595 842 0 0 595 842 ]

举个具体例子:我合并一个2页的PDF和一个3页的PDF,最终生成的5页PDF里,每一页的MediaBox和CropBox都出现了重复数值——前2页的属性值重复了2次,后3页重复了3次,重复次数刚好对应原PDF的页数。如果不修正这些属性的尺寸,页面就无法正常显示。

我用的合并代码是很常规的写法:

import pypdf
def merge_pdfs(pdf_list, output_path):
    pdf_merger = pypdf.PdfWriter()
    for pdf in pdf_list:
        pdf_merger.append(pdf)
    pdf_merger.write(output_path)
    pdf_merger.close()

正常情况下,MediaBox和CropBox应该是这种格式(###代表正确的尺寸数值):

/MediaBox [ 0 0 ### ### ]
/CropBox [ 0 0 ### ### ]

目前我只能手动修正这个问题,但这显然不是完美的解决方案,而且我至今搞不懂为什么会出现这种情况。我的手动修正代码如下:

for page in range(len(merged_pdf.pages)):
    merged_pdf.pages[page].pagedata.mediabox.lower_left = (0, 0)
    merged_pdf.pages[page].pagedata.mediabox.upper_right = (595, 842)
    merged_pdf.pages[page].pagedata.cropbox.lower_left = (0, 0)
    merged_pdf.pages[page].pagedata.cropbox.upper_right = (595, 842)

备注:内容来源于stack exchange,提问作者Roman

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.14 17:34:30