使用PyPDF将两页PDF合并为单页并排时显示不全求助
解决PyPDF合并PDF两页并排显示不全的问题
问题出在直接给原PDF页面添加变换后合并时,原页面的裁剪框/媒体框会限制内容显示范围,平移后超出原页面边界的部分会被截断,导致第二页只显示一半。
改用merge_transformed_page方法就能解决这个问题,该方法会基于变换参数正确渲染内容,不受原页面框的限制。修正后的代码如下:
from pypdf import PdfWriter, PdfReader, PageObject, Transformation reader = PdfReader(open("file.pdf", "rb")) page1 = reader.pages[0] page2 = reader.pages[1] # 创建横向空白页,适配缩放后两页并排的尺寸 single_page = PageObject.create_blank_page(width=842, height=595) # 定义左右页面的变换逻辑:先缩放0.7,再平移到对应位置 left_transform = Transformation().scale(0.7).translate(0, 0) right_transform = Transformation().scale(0.7).translate(421, 0) # 使用merge_transformed_page合并页面,传入变换参数 single_page.merge_transformed_page(page1, left_transform, expand=False) single_page.merge_transformed_page(page2, right_transform, expand=False) output = PdfWriter() output.add_page(single_page) # 用with语句管理文件,更安全简洁 with open("file_output.pdf", "wb") as output_file: output.write(output_file)
额外提示:
- 若不确定原页面尺寸,可通过
page1.mediabox.width和page1.mediabox.height获取,以此精准计算空白页尺寸,比如:single_page = PageObject.create_blank_page(width=page1.mediabox.width*0.7*2, height=page1.mediabox.height*0.7)
内容的提问来源于stack exchange,提问作者gallochri
相关产品推荐
相关产品推荐

