使用 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.

相关推荐
诸葛大钢铁10 小时前
PDF转PPT转换方法总结
pdf·powerpoint
漫游者Nova1 天前
PDF转Markdown/JSON软件MinerU最新1.3.12版整合包下载
pdf·json·markdown·mineru
sss191s1 天前
Java 集合面试题 PDF 及常见考点解析与备考指南
java·开发语言·pdf
风筝超冷1 天前
PDF 转 Markdown
pdf
wxgnolux1 天前
网页端 js 读取发票里的二维码信息(图片和PDF格式)
pdf·jsqr
Eiceblue1 天前
C# 快速检测 PDF 是否加密,并验证正确密码
开发语言·pdf·c#·visual studio
耗不尽的先生1 天前
【PDF PicKiller】PDF批量删除固定位置图片工具,默认解密,可去一般图、背景图、水印图!
pdf
weixin_472339462 天前
使用Python提取PDF元数据的完整指南
java·python·pdf
前端探险家2 天前
vue2中使用jspdf插件实现页面自定义块pdf下载
pdf
William.csj2 天前
Adobe Acrobat——设置PDF打印页面的大小
pdf