使用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
相关产品推荐
相关产品推荐

