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

