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

相关推荐
呼啦啦呼啦啦啦啦啦啦6 小时前
利用pdfjs实现的pdf预览简单demo(包含翻页功能)
android·javascript·pdf
东华果汁哥21 小时前
【URL 转换为PDF】HTML转换为PDF
前端·pdf·html
诸葛大钢铁1 天前
Excel转PDF的三种方法
笔记·职场和发展·pdf·excel
爱分享的飘哥2 天前
第二十一 篇 PDF文档自动化:Python一键合并、分割、水印、提取与加密解密!你的PDF全能管家!
python·pdf·python操作pdf·pdf 加解密·pdf 分割和合并
簪花走马过长安3 天前
【PDF识别改名】使用京东云OCR完成PDF图片识别改名,根据PDF图片内容批量改名详细步骤和解决方案
ui·pdf·ocr·excel·京东云·wps·图片区域识别重命名
ComPDFKit3 天前
为什么有些PDF无法复制文字?原理分析与解决方案
人工智能·pdf·ocr
开开心心就好3 天前
电脑桌面整理工具,一键自动分类
运维·服务器·前端·智能手机·pdf·bash·symfony
咖啡色格调3 天前
Java使用itextpdf7生成pdf文档
java·pdf·maven
开开心心_Every3 天前
可增添功能的鼠标右键优化工具
开发语言·pdf·c#·计算机外设·电脑·音视频·symfony
余大侠在劈柴4 天前
pdf.js 开发指南:在 Web 项目中集成 PDF 预览功能
前端·javascript·学习·pdf