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

PyPDF处理PDF页面裁切不符合预期的问题咨询

PyPDF处理PDF页面裁切不符合预期的问题咨询

我最近在做一个PDF处理的小工具,需求是把一份横向排版的PDF每页拆成两个独立页面——这份原PDF的每个页面都是横向的,里面左右并排着两个内容页,就像把两页纸横向拼在一起做成了一个PDF页面。

我期望的处理效果是:把原页面里的左半部分内容单独做成一页,右半部分也单独做成一页,也就是把并排的两个内容页拆分开。

我一开始的思路是:对于每个原页面,复制出两个副本,把左副本的右边界设为原页面宽度的一半,右副本的左边界也设为这个中点,这样就能把页面从中间垂直切开。于是我写了这段代码:

...

reader = PdfReader("orig.pdf")
writer = PdfWriter()

for page in reader.pages:
    left = deepcopy(page)
    right = deepcopy(page)

    left.mediabox.right = page.mediabox.right / 2
    right.mediabox.left = page.mediabox.right / 2

    writer.add_page(left)
    writer.add_page(right)

...

可运行后发现完全不对——这段代码居然是把PDF页面水平切成了上下两半,根本不是我想要的垂直左右切分。折腾了一阵后,我试出了能实现预期效果的代码,是这样的:

from copy import deepcopy
from pypdf import PdfReader, PdfWriter

reader = PdfReader("orig.pdf")

if not len(reader.pages):
    print("PDF has no pages")
    exit()
    
writer = PdfWriter()

for page in reader.pages:
    left = deepcopy(page)
    right = deepcopy(page)

    left.mediabox.bottom = page.mediabox.top / 2
    right.mediabox.top /= 2

    writer.add_page(left)
    writer.add_page(right)

with open("output.pdf", 'wb') as outfile:
    writer.write(outfile)

这就让我彻底懵了:明明我要的是垂直切分,为什么调整mediabox的right和left会变成水平裁切,反而调整bottom和top却实现了我想要的左右切分效果?有没有大佬能帮我解释一下这背后的原因?


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.14 11:50:27