Python:使用 PyPDF2 分割 PDF 文档

安装 PyPDF2:

pip install pypdf2

分割 PDF 文件的 Python 代码:

# -*- coding: utf-8 -*-

import os
import sys
from PyPDF2 import PdfFileReader, PdfFileWriter

def splitPdf(filename, page):
    print("src file [{0}], page [{1}-{2}], sub file [{3}]".format(filename, page[0], page[1], page[2]))
    srcFile = open(filename, 'rb')
    pdfReader = PdfFileReader(srcFile)
    targetFile = page[2]
    if os.path.exists(targetFile):
        return 1
    filePageNum = pdfReader.getNumPages()
    if filePageNum <= page[0] or filePageNum < page[1]:
        return 2

    pdfWriter = PdfFileWriter()
    for p in range(page[0] - 1, page[1]):
        pdfPage = pdfReader.getPage(p)
        pdfWriter.addPage(pdfPage)

    with open(targetFile, 'wb') as fp:
        pdfWriter.write(fp)

    return 'ok'

if "__main__" == __name__:
    filename = sys.argv[1]
    pages = list()
    for arg in sys.argv[2:]:
        page = list()
        if '-' in arg: # page 1-2
            page.append(int(arg.split('-')[0]))
            page.append(int(arg.split('-')[1]))
        else: # only page 3
            page.append(int(arg))
            page.append(int(arg))
        page.append(filename[:-4] + '_' + arg + filename[-4:]) # sub file name
        pages.append(page)
    for page in pages:
        splitPdf(filename, page)

源 PDF 文件分割之前:

$ ls -l
-rw-r--r--@ 1  118597  3 22 14:35 a-pdf-file.pdf
-rw-r--r--  1    1227  3 22 14:43 split.py

执行切割文件的命令:

$ python split.py a-pdf-file.pdf 1-2 3 5-6 # 把文件的第1-2页,第3页,第5-6页从a-pdf-file.pdf 中切割出来

切割文件后的效果:

$ ls -l
-rw-r--r--@ 1  118597  3 22 14:35 a-pdf-file.pdf
-rw-r--r--  1   67994  3 22 14:51 a-pdf-file_1-2.pdf
-rw-r--r--  1   41257  3 22 14:51 a-pdf-file_3.pdf
-rw-r--r--  1   62294  3 22 14:51 a-pdf-file_5-6.pdf

其中 a-pdf-file_1-2.pdf、a-pdf-file_3.pdf、a-pdf-file_5-6.pdf 三个文件就是按页切割后的文件


Python:使用 PyPDF2 分割 PDF 文档_第1张图片

 

你可能感兴趣的:(Python,python)