一个实用PDF文件拆分小程序

27 阅读1分钟

1. 应用场景

  • 将一个大的PDF文件,可以是购物的电子发票(含很多页的商品明细)等,提取首页。
  • 。。。。。。

2. 心路历程

2.1 尝试过的方法

  • 百度在线工具,各类工具网站,生成的文件带水印,需要注册会员,果断放弃。
  • PDF阅读器,需要安装工具。

2.2 最终选择

一言不合,直接开码——通过python的第三方库实现。

2.3 选择理由

免费!免费!免费!

灵活!灵活!灵活!

享受!享受!享受!

3. 代码示例

#!/usr/bin/python3
# -- coding: utf-8 --

"""
Description:拆分PDF文件,每页生成一个独立的PDF文件
Author: 每天可乐
Email: 123@example.com
Date: 2024年4月15日
Version: 1.0

Dependencies:
    - PyPDF2
    - os
Usage:
    python3 split_pdf.py
"""

import os
import PyPDF2

def split_pdf(input_pdf_path, output_folder):
    # 打开PDF文件
    with open(input_pdf_path, 'rb') as input_file:
        pdf_reader = PyPDF2.PdfReader(input_file)
        for page_num in range(len(pdf_reader.pages)):
            # 创建一个PDF writer对象,用于写入每一页
            pdf_writer = PyPDF2.PdfWriter()
            # 将当前页面添加到writer中
            pdf_writer.add_page(pdf_reader.pages[page_num])

            # 定义输出文件名
            output_filename = f'{output_folder}/page_{page_num + 1}.pdf'

            # 写入PDF文件
            with open(output_filename, 'wb') as output_file:
                pdf_writer.write(output_file)

# 输入文件
input_pdf = 'fa3cbf676bb04d39b85c3844e43c7ae1.pdf'

# 输出文件夹
output_dir = '/tmp/fa3cbf676bb04d39b85c3844e43c7ae1_files'
# 创建输出文件夹
if not os.path.exists(output_dir):
    os.makedirs(output_dir)

split_pdf(input_pdf, output_dir)

4. 成果展示