Python办公自动化教程(002):PDF的拆分与合并

1、PyPDF2 介绍

介绍:

PyPDF2是一个用于处理PDF文件的Python库,它提供了丰富的功能来读取、编辑、合并、拆分PDF文档,以及提取文本、图像和其他内容。

功能:

  1. 读取PDF:PyPDF2可以轻松地打开和读取PDF文件,获取文档信息(如标题、作者、创建日期等)以及页面数量和页面尺寸。
  2. 页面操作:支持页面的合并、拆分、旋转、裁剪等操作,以及删除、插入新页面等。
  3. 加密与解密:可以对PDF文件进行加密和解密操作,保护文件内容的安全。
  4. 添加水印:可以在PDF页面上添加文本或图片水印,支持调整水印的透明度和位置。
  5. 表单操作:能够读取和填写PDF表单数据,创建、修改和删除表单字段。
  6. 元数据操作:可以获取和设置PDF文档的元数据,如标题、作者、主题等。
  7. 书签与链接:支持添加、修改和删除PDF文档中的书签和链接。

2、PDF文档拆分与合并

2.1 PDF拆分

【1】完整代码

python 复制代码
from PyPDF2 import PdfWriter, PdfReader

pdf_reader = PdfReader('./file/test.pdf')
print(len(pdf_reader.pages))

for i in range(len(pdf_reader.pages)):
    # 创建
    pdf_write = PdfWriter()
    # 获取当前页的文本
    text = pdf_reader.pages[i]
    # 把文本写入到新的pdf
    pdf_write.add_page(text)
    # wb表示二进制文件的写入,pdf中因为不只有文本
    with open(f'./file/Python教程_{i+1}.pdf', 'wb') as file_wb:
        pdf_write.write(file_wb)


print('拆分完成')

【2】拆分结果

2.2 PDF合并

将上一步拆分之后的PDF文件重新合并为新的文件【Python教程_merge.pdf】

【1】代码

python 复制代码
import os
import re
from PyPDF2 import PdfWriter, PdfReader

files = os.listdir('./file')
# 拿到拆分之后的文件
all_files = []
for file in files:
    if re.search(r'_\d', file):
        all_files.append(file)
print(all_files)

# 创建pdf写入器
pdf_write = PdfWriter()
for file in all_files:
    pdf_reader = PdfReader(f'./file/{file}')
    # 遍历pdf页码,因为不确定当前的pdf是否只有一页
    for i in range(len(pdf_reader.pages)):
        # 获取当前页的文本
        text = pdf_reader.pages[i]
        # 把文本写入到新的pdf
        pdf_write.add_page(text)
        # wb表示二进制文件的写入,pdf中因为不只有文本
with open(f'./file/Python教程_merge.pdf', 'wb') as file_wb:
    pdf_write.write(file_wb)

print('合并完毕')

【2】合并结果

相关推荐
长沙三为智能科技33 分钟前
中小企业数据驱动决策:从老板拍脑袋到数据说话的4步实操
python
计算机源码社1 小时前
基于大数据技术的台北市住宅价格影响因素挖掘与可视化分析-基于Python与Hadoop的台北市住宅价格数据仓库构建与可视化
大数据·hadoop·python·数据分析·spark·毕业设计·数据可视化
唐璜Taro1 小时前
Agent Harness 系列 · 第 2篇|同一个问题三种回答
人工智能·python
傻啦嘿哟1 小时前
QQ音乐爬虫:爬取歌单与歌曲信息,做个性化推荐系统
python
计算机源码社1 小时前
基于Hadoop+Spark的乳腺癌病理数据可视化分析系统 基于K-Means聚类与PCA降维的乳腺癌形态特征分析系统
大数据·hadoop·python·数据分析·spark·毕业设计·数据可视化
Android-Flutter1 小时前
Compose CompositionLocal 详解
android·compose
磁场转动100万匹1 小时前
基于 dlib 与 OpenCV 的疲劳驾驶检测:眼睛纵横比(EAR)原理与代码逐段解析
pytorch·python
我不会起名字3221 小时前
一天一道力扣Hot100(37):深度优先算法--括号生成
java·数据结构·c++·后端·python·算法·go
小白勇闯网安圈2 小时前
第5章 流式输出与人工审核
python·langchain
打工仔折腾 AI2 小时前
数据库上 K8s 之后谁来管?拆解金仓 KES-Operator 的声明式运维方案
人工智能·后端·python·性能优化·ai agent 实战