使用 pypdf 快速切分 PDF 文件


categories: [Python]

tags: Python MacOS

写在前面

最近有小伙伴问我怎么把 PDF 文档切分成两个大小相近的 PDF文档, 要是在 mac 上, 直接无脑预览就行了, 但是这样不够跨平台, 之后我也尝试过 pymupdf, 但是奈何不支持 arm 架构, 后来还是用 Python 原生的 pypdf 了.

有 AI 加持还是很方便

方法 1:mac 预览

使用预览左边的缩略图栏就可以方便地切分(删除页面)然后保存了. 纯手工操作.

方法 2: pypdf

先安装

bash 复制代码
python -m pip install pypdf

pypdf 和 PyPDF2 以及 PyPDF3 都是如出一辙, 但是后来 PyPDF2 合并到了 pypdf, 所以用 pypdf 即可.

上代码

python 复制代码
#!/opt/homebrew/Caskroom/miniforge/base/envs/py3x/bin/python
import pypdf
import sys


def split_and_save(filename, split_num):
    pdf = pypdf.PdfReader(filename)
    pdf1 = pypdf.PdfWriter()
    pdf2 = pypdf.PdfWriter()

    page_count = len(pdf.pages)

    for i in range(split_num):
        pdf1.add_page(pdf.pages[i])
    for i in range(split_num, page_count):
        pdf2.add_page(pdf.pages[i])

    # save output pdf on current path
    pdf1.write(f'{filename[:-4]}-part1.pdf')
    pdf2.write(f'{filename[:-4]}-part2.pdf')


if __name__ == "__main__":
    if len(sys.argv) != 3:
        print("Usage: split-pdf.py <filename> <split_page_num>")
        exit(-1)
    filename = sys.argv[1]
    split_num = int(sys.argv[2])

    split_and_save(filename, split_num)

API还是很清晰的, 配合python 强大的表达力, 搞个 PDF 不在话下.

使用方法就是

python 复制代码
python split.py input.pdf 10

参数是待切分 PDF 的文件名和从哪一页开始切分, 例如我传入参数是 10, 那就是前 10 页为一个新 PDF, 后面的是一个新的 PDF.

相关推荐
S. Dylan10 小时前
Edge浏览器打开PDF无法显示电子签章
edge·pdf
一马平川的大草原10 小时前
如何基于pdf2image实现pdf批量转换为图片
计算机视觉·pdf·文件拆分
m0_5945263010 小时前
Python批量合并多个PDF
java·python·pdf
hairenjing112311 小时前
将图片添加到 PDF 的 5 种方法
pdf
✿゚卡笨卡11 小时前
pdf 添加页眉页脚,获取前五页
java·pdf
blegn11 小时前
PDF编辑工具Adobe Acrobat DC 2023安装教程(附安装包)
pdf·办公软件·office
patrickpdx12 小时前
如何调整pdf的页面尺寸
pdf
星月前端15 小时前
【vue-pdf】简单封装pdf预览组件
javascript·vue.js·pdf
Eiceblue19 小时前
Python 在PDF中绘制形状(线条、矩形、椭圆形等)
vscode·python·pycharm·pdf
有过~19 小时前
免费且强大的PDF转换工具——PDFgear
pdf