文章目录
  1. 1. 1. 安装pypdf
  2. 2. 2. 切分PDF

最近有需要将A3版面的PDF页面从中间切分,一个A3页转换为二个A4页面的PDF, 之后就可以使用A4纸打印了。使用了pypdf库很容易就实现了,再多的pdf页面也都可以一键搞定。

1. 安装pypdf

pypdf是一个python语言的PDF处理库,可以实现PDF中提取文字、图片, PDF文件合并、页面缩放变形等操作。 更多参见文档:https://pypdf.readthedocs.io/en/stable/user/installation.html。

要求python3.8以上, 使用pip直接安装

1
pip install pypdf

2. 切分PDF

直接粘代码了,实现逻辑超简单。PdfReader用于读取PDF文件, PdfWriter写入PDF文件;打开一个PDF文件后,针对每一个页面clone出2份, 分别使用mediabox截取原来的左半边与右半边, 然后就写出到文件里。

参考Cropping and Transforming PDFs: https://pypdf.readthedocs.io/en/stable/user/cropping-and-transforming.html#transforming-several-copies-of-the-same-page

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
from pypdf import PdfReader, PdfWriter, PaperSize
from pypdf.generic import RectangleObject

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

for page in reader.pages:
# 页面坐标信息
mb = page.mediabox

# 左半边
page1 = page.clone(writer, True)
page1.mediabox = RectangleObject((mb.left, mb.bottom, mb.left + (mb.right - mb.left)/2 , mb.top))
writer.add_page(page1)

# 右半边
page2 = page.clone(writer, True)
page2.mediabox = RectangleObject((mb.left + (mb.right - mb.left)/2 , mb.bottom, mb.right, mb.top))
writer.add_page(page2)

with open("a-out.pdf", "wb") as fp:
writer.write(fp)
文章目录
  1. 1. 1. 安装pypdf
  2. 2. 2. 切分PDF