python 使用 pypdf2 分割 合并 pdf

创建日期: 2023-12-22 17:10 | 作者: 风波 | 浏览次数: 16 | 分类: Python

相关:pdf 相关的 python 包

1. 安装 pypdf2

pip install pypdf2

2. 分割文件

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

from PyPDF2 import PdfFileReader, PdfFileWriter
import sys


def split_single_pdf(read_file, start_page, end_page, pdf_file):
    fp_read_file = open(read_file, 'rb')
    pdf_output = PdfFileWriter()  # 实例一个 PDF文件编写器
    pdf_input = PdfFileReader(fp_read_file)  # 将要分割的PDF内容格式话
    for i in range(start_page, end_page + 1):
        print("get page : [{0}]".format(i))
        page = pdf_input.getPage(i)
        page.scaleTo(int(14.22 / 2.54 * 72), int(19.90 / 2.54 * 72))
        pdf_output.addPage(page)
    with open(pdf_file, 'wb') as sub_fp:
        pdf_output.write(sub_fp)
    print(f'完成分割{start_page}页-{end_page}页,保存为{pdf_file}!')


if "__main__" == __name__:
    if len(sys.argv) < 5:
        print("Usage: {0} srcfile startpage endpage newfile", sys.argv[0])
        sys.exit(1)
    split_single_pdf(sys.argv[1], int(sys.argv[2]) - 1, int(sys.argv[3]) - 1, sys.argv[4])

3. 合并文件

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

from PyPDF2 import PdfFileMerger
import os
import sys

def merge_pdf(files, target):
    merger = PdfFileMerger()

    for file in files: #从所有文件中选出pdf文件合并
        if file[-4:] == ".pdf":
            print("add file [{0}]".format(file))
            merger.append(open(file, 'rb'))

    with open(target, 'wb') as fout:  #输出文件为newfile.pdf
        merger.write(fout)

if "__main__" == __name__:
    if len(sys.argv) < 3:
        print("Usage: {0} part1 ... target".format(sys.argv[0]))
        sys.exit(1)
    merge_pdf(sys.argv[1:-1], sys.argv[-1])
16 浏览
13 爬虫
0 评论