Python办公自动化之PDF

2023-09-18 22:25:07

1、Python操作PDF概述


Python操作PDF主要有两个库:PyPDF2和pdfplumber

安装:

pip install PyPDF2
pip install pdfplumber

常用操作主要包括:拆分、合并、文字与表格提取、图片提取、添加水印、加密与解密等

2、批量拆分


操作步骤:

  • 读取PDF的整体内容
  • 遍历每一页,以step为间隔将PDF存成小文件块
  • 将小文件块重新保存为新的PDF文件
import os
from PyPDF2 import PdfReader, PdfWriter

# filepath:读取文件路径  filename:保存文件的统一命名  dirpath:保存文件路径  step:每隔多少页生成一个文件
def split_pdf(filepath, dirpath, filename, step):
    # 创建保存目录
    if not os.path.exists(dirpath):
        os.mkdir(dirpath)
    pdf_reader = PdfReader(filepath)
    # 读取每一页的数据
    page_list = pdf_reader.pages
    pages = len(page_list)
    for page in range(0, pages, step):
        pdf_writer = PdfWriter()
        # 拆分pdf,每step页的拆分为一个文件,如step=5,表示0-4页、5-9页...各为一个文件
        for index in range(page, page + step):
            if index < pages:
                pdf_writer.add_page(page_list[index])
        # 保存拆分后的小文件
        save_path = os.path.join(dirpath, filename + str(int(page / step) + 1) + '.pdf')
        print(save_path)
        with open(save_path, "wb") as out:
            pdf_writer.write(out)
    print("保存路径: " + dirpath)

split_pdf(r'C:\Users\cc\Desktop\test.pdf', r'C:\Users\cc\Desktop\PDF', 'pdf_split_', step=2)

3、批量合并


操作步骤:

  • 确定合并文件顺序
  • 循环追加到一个文件块中
  • 保存为一个新文件
# filepath:要合并的PDF文件目录  filename:原文件的统一命名  dirpath:合并后的保存路径
def concat_pdf(filepath, dirpath, filename):
    pdf_writer = PdfWriter()
    # ['pdf_split_1.pdf', 'pdf_split_2.pdf']
    list_filename = os.listdir(filepath)
    # 对文件进行排序
    list_filename.sort(key=lambda x: int(x[:-4].replace(filename, 
更多推荐

DPDK环境搭建

(1)虚拟环境:VMware®Workstation16Pro网上随便下载一个也行(2)操作系统:ubuntu-22.04-beta-desktop-amd64.iso下载地址:oldubuntu-releases-releases-22.04安装包下载_开源镜像站-阿里云(3)DPDK版本:22.07下载地址:htt

003-第一代硬件系统环境搭建

第一代硬件系统环境搭建文章目录第一代硬件系统环境搭建项目介绍摘要结构部分电路部分软件部分关键字:Qt、Qml、硬件、系统、搭建项目介绍欢迎来到我们的QML&C++项目!这个项目结合了QML(QtMeta-ObjectLanguage)和C++的强大功能,旨在开发出色的用户界面和高性能的后端逻辑。在项目中,我们利用QML

CocosCreator3.8研究笔记(十七)CocosCreator UI组件(一)

CocosCreator中,用户界面User-interface(UI)组件和2d渲染对象的区别在于2D渲染对象一般只负责将2D对象渲染出来,而UI则更多的承担着用户交互的能力。常用的UI控件可通过添加节点的方式来创建。在层级管理器中点击左上角的+创建节点按钮,然后选择UI来创建所需的UI节点,相应的UI组件便会自动挂

亚马逊商品详情数据接口

亚马逊商品详情数据接口可以用于获取商品详情信息,包括但不限于商品ID、商品标题、商品描述等。这些信息可以用于多种用途,例如:了解商品信息,帮助消费者做出购买决策。整合其他平台或网站的数据,提供全面的商品信息比较。为其他网站或应用程序提供数据支持,例如个性化推荐、搜索引擎优化等。总之,亚马逊商品详情数据接口可以促进商品信

域名解析--nslookup和dig

dig(DomainInformationGroper)dig是一个功能强大且更灵活的DNS查询工具,通常在Linux和macOS等Unix-like操作系统上使用。以下是dig的一些常见用法和区别:查询域名信息digexample.com这将返回与指定域名相关的DNS记录,包括IP地址、MX记录、CNAME记录等。指

【Go 基础篇】Go语言标识符解析:命名的艺术与最佳实践

介绍在计算机编程中,标识符(Identifier)是用来标识程序实体(变量、函数、类型等)的名称。良好的标识符命名可以使代码更加可读、易于维护,也能够提高代码的可理解性和可扩展性。在Go语言(Golang)中,标识符的命名规范和最佳实践对于编写高质量的代码至关重要。本篇博客将深入探讨Go语言中标识符的基本概念、命名规范

【Vue】上万个字把事件处理讲解的淋漓尽致

hello,我是小索奇,精心制作的Vue系列教程持续更新哈,想要学习&巩固&避坑就一起学习吧~事件处理事件的基本用法重点内容使用v-on:xxx缩写@xxx绑定事件,其中xxx是事件名(回顾:v-bind缩写为冒号:)事件的回调需要配置在methods对象中,最终会在VM上methods中配置的函数,不要用箭头函数,否

Linux网络编程(高并发服务器)

文章目录前言一、什么是高并发服务器二、使用多线程和多进程实现高并发服务器的思路三、多进程服务器代码编写四、多线程服务器代码编写总结前言本篇文章带大家学习Linux网络编程中的高并发服务器。首先我们需要了解什么是高并发服务器,然后是学习如何来编写高并发服务器。一、什么是高并发服务器高并发服务器是指能够同时处理大量并发请求

yamot:一款功能强大的基于Web的服务器安全监控工具

关于yamotyamot是一款功能强大的基于Web的服务器安全监控工具,专为只有少量服务器的小型环境构建。yamot只会占用非常少的资源,并且几乎可以在任何设备上运行。该工具适用于Linux或BSD,当前版本暂不支持Windows平台。比如说,广大研究人员可以使用yamot来监控在家运行的RaspberryPi服务器。

Centos下安装 oracle11g 博客2

[oracle@wangmengyuandatabase]$./runInstaller-silent-responseFile/home/oracle/database/response/db_install.rsp-ignorePrereq./runInstaller-silent-responseFile/hom

HTTPS的工作过程

HTTPS就是对HTTP进行了加密,因为要保证数据安全,就需要进行加密,网络中不再直接传输明文了,而是加密之后的密文,加密的方法有很多,但是整体可以分为两大类:对称加密和非对称加密对称加密对称加密其实就是通过同一个"密钥",把明文加密成密文,并且也能把密文解密成明文,引入对称加密之后,即使数据被截获,由于黑客不知道密钥

热文推荐