Python自动化办公之PDF拆分工具

在Python中使用PDF:阅读和拆分_fpdf库分割pdf文件 不知道你们用的什么环境,我一般都是用的Python3.6环境和pycharm解释器,没有软件,或者没有资料,没人解答问题,都可以免费领取(包括今天的代码),过几天我还会做个视频教程出来,有需要也可以领取~给大家准备的学习资料包括但不限于:Python 环境、pycharm编辑器/永久激活/翻译插件python 零基础视频教程Python 界面开发实战教程Python 爬虫实战教程Python 数据分析实战教程python 游戏开发实战教程Python 电子书100本。 阅读详情

今天我们继续分享真实的自动化办公案例,希望各位 Python 爱好者能够从中得到些许启发,在自己的工作生活中更多的应用 Python,使得工作事半功倍!

需求

需要从 PDF 中取出几页并将其保存为新的 PDF,为了后期使用方便,这个工具需要做成傻瓜式的带有 GUI 页面的形式
在这里插入图片描述

选择源 pdf 文件,再指定下生成的新的 pdf 文件名称及保存位置,和需要拆分的 page 信息,就可以得到新的 pdf 文件了

需求解析

对于 Python GUI,我们有太多种选择了,下面我们先来横向的简单对比下

从高层次上看,大的 GUI 工具有:

  • ![Qt
  • WxWindows
  • Tkinter
  • Customer libraries(Kivy,Toga等)
  • Web相关(HTML,Flask等)

不过今天,我们选择的工具是 appJar,这是一个由一位从事教育工作的大神发明的,所以它可以提供一个更加简单的 GUI 创建过程,而且是完全基于 Tkinter 的,Python 默认支持

代码实现

首先为了实现 PDF 操作,我这里选择了 pypdf2 库

我们先硬编码一个输入输出的示例

from PyPDF2 import PdfFileWriter, PdfFileReader

infile = "Input.pdf"
outfile = "Output.pdf"

page_range = "1-2,6"

接下来我们实例化 PdfFileWriter 和 PdfFIleReader 对象,并创建实际的 Output.pdf 文件

output = PdfFileWriter()
input_pdf = PdfFileReader(open(infile, "rb"))
output_file = open(outfile, "wb")

下面一个比较复杂的点就是需要拆分 pdf,提取页面并保存在列表中

page_ranges = (x.split("-") for x in page_range.split(","))
range_list = [i for r in page_ranges for i in range(int(r[0]), int(r[-1]) + 1)]

最后就是从原始文件中拷贝内容到新的文件

for p in range_list:
    output.addPage(input_pdf.getPage(p - 1))
output.write(output_file)

下面来构建 GUI 界面

对于这个拆分 PDF 的小工具,需要具有如下功能:

  • 可以通过标准文件浏览器选择 pdf 文件
  • 可以选择输出文件的位置及文件名称
  • 可以自定义提取哪些页面
  • 有一些错误检查

通过 PIP 安装好 appJar 后,我们就可以编码了

from appJar import gui
from PyPDF2 import PdfFileWriter, PdfFileReader
from pathlib import Path

创建 GUI 窗口

app = gui("PDF Splitter", useTtk=True)
app.setTtkTheme("default")
app.setSize(500, 200)

这里我使用了默认主题,当然也可以切换各种各样的主题模式

在这里插入图片描述

下面是添加标签和数据输入组件

app.addLabel("Choose Source PDF File")
app.addFileEntry("Input_File")

app.addLabel("Select Output Directory")
app.addDirectoryEntry("Output_Directory")

app.addLabel("Output file name")
app.addEntry("Output_name")

app.addLabel("Page Ranges: 1,3,4-10")
app.addEntry("Page_Ranges")

接下来添加按钮,“处理”和“退出”,按下按钮,调用如下函数

app.addButtons(["Process", "Quit"], press)

最后就是运行这个 app 啦

# start the GUI
app.go()

这样我们就完成了 GUI 的搭建,下面编写内部处理逻辑。程序读取任何输入,判断是否为 PDF,并拆分

def press(button):
    if button == "Process":
        src_file = app.getEntry("Input_File")
        dest_dir = app.getEntry("Output_Directory")
        page_range = app.getEntry("Page_Ranges")
        out_file = app.getEntry("Output_name")
        errors, error_msg = validate_inputs(src_file, dest_dir, page_range, out_file)
        if errors:
            app.errorBox("Error", "\n".join(error_msg), parent=None)
        else:
            split_pages(src_file, page_range, Path(dest_dir, out_file))
    else:
        app.stop()

如果单击 “处理(Process)”按钮,则调用 app.getEntry() 检索输入值,每个值都会被存储,然后通过调用 validate_inputs() 进行验证

来看看 validate_inputs 函数

def validate_inputs(input_file, output_dir, range, file_name):
    errors = False
    error_msgs = []

    # Make sure a PDF is selected
    if Path(input_file).suffix.upper() != ".PDF":
        errors = True
        error_msgs.append("Please select a PDF input file")

    # Make sure a range is selected
    if len(range) < 1:
        errors = True
        error_msgs.append("Please enter a valid page range")

    # Check for a valid directory
    if not(Path(output_dir)).exists():
        errors = True
        error_msgs.append("Please Select a valid output directory")

    # Check for a file name
    if len(file_name) < 1:
        errors = True
        error_msgs.append("Please enter a file name")

    return(errors, error_msgs)

这个函数就是执行一些检查来确保输入有数据并且有效

在收集验证了所有数据后,就可以调用 split 函数来处理文件了

def split_pages(input_file, page_range, out_file):
    output = PdfFileWriter()
    input_pdf = PdfFileReader(open(input_file, "rb"))
    output_file = open(out_file, "wb")

    page_ranges = (x.split("-") for x in page_range.split(","))
    range_list = [i for r in page_ranges for i in range(int(r[0]), int(r[-1]) + 1)]

    for p in range_list:
        # Need to subtract 1 because pages are 0 indexed
        try:
            output.addPage(input_pdf.getPage(p - 1))
        except IndexError:
            # Alert the user and stop adding pages
            app.infoBox("Info", "Range exceeded number of pages in input.\nFile will still be saved.")
            break
    output.write(output_file)

    if(app.questionBox("File Save", "Output PDF saved. Do you want to quit?")):
        app.stop()

好了,这样我们就完成了一个简易的 GUI 拆分 PDF 文件的工具喽

如果你对Python感兴趣,想要学习python,这里给大家分享一份Python全套学习资料,都是我自己学习时整理的,希望可以帮到你,一起加油!

😝有需要的小伙伴,可以V扫描下方二维码免费领取🆓

​

1️⃣零基础入门

① 学习路线

对于从来没有接触过Python的同学,我们帮你准备了详细的学习成长路线图。可以说是最科学最系统的学习路线,你可以按照上面的知识点去找对应的学习资源,保证自己学得较为全面。
在这里插入图片描述

② 路线对应学习视频

还有很多适合0基础入门的学习视频,有了这些视频,轻轻松松上手Python~
在这里插入图片描述

③练习题

每节视频课后,都有对应的练习题哦,可以检验学习成果哈哈!
在这里插入图片描述

2️⃣国内外Python书籍、文档

① 文档和书籍资料

在这里插入图片描述

3️⃣Python工具包+项目源码合集

①Python工具包

学习Python常用的开发软件都在这里了!每个都有详细的安装教程,保证你可以安装成功哦!
在这里插入图片描述

②Python实战案例

光学理论是没用的,要学会跟着一起敲代码,动手实操,才能将自己的所学运用到实际当中去,这时候可以搞点实战案例来学习。100+实战案例源码等你来拿!
在这里插入图片描述

③Python小游戏源码

如果觉得上面的实战案例有点枯燥,可以试试自己用Python编写小游戏,让你的学习过程中增添一点趣味!
在这里插入图片描述

4️⃣Python面试题

我们学会了Python之后,有了技能就可以出去找工作啦!下面这些面试题是都来自阿里、腾讯、字节等一线互联网大厂,并且有阿里大佬给出了权威的解答,刷完这一套面试资料相信大家都能找到满意的工作。
在这里插入图片描述
在这里插入图片描述

上述所有资料 ⚡️ ,朋友们如果有需要的,可以扫描下方👇👇👇二维码免费领取🆓
我已经上传至优快云官方,如果需要可以扫描下方官方二维码免费获取【保证100%免费】

最新全套【Python入门到进阶资料 & 实战源码 &安装工具】(安全链接,放心点击)

" />

[Python实战] PDF 批处理工具开发实战:一键加水印、拆分、合并(支持GUI操作 + 源码开放) 本文介绍了一个基于Python开发的PDF批量处理工具,支持GUI操作,主要功能包括: 批量添加文字/图片水印(可调透明度、位置) 按页或范围拆分PDF文件 合并多个PDF文档(支持自定义排序) 提供图形化界面(Tkinter),无需命令行操作 技术栈采用PyPDF2、reportlab和tkinter等库实现核心功能。文章详细讲解了水印生成、文件拆分合并等关键代码,并提供了GUI界面设计方案。项目支持二次开发,同时提供付费资源包(含源码、可执行程序和使用说明),方便快速部署。该工具可显著提升日常办公中的P 阅读详情

相关推荐

PDF文件拆分, 不限制文件大小

工具使用方式,运行代码后,会弹出文件资源管理器,选中需要拆分的pdf文件后点确认,然后按照提示按照页数拆分还是按照组拆分。运行前需要确认是否安装pypdf和tkinter。

z1872385的博客 115

python脚本分割pdf文件

python拆分PDF文件

AcceptedLin的博客 2万+

Python办公自动化之PDF

Python办公自动化之PDF

qq_41206014的博客 459

利用命令行工具pdftk对PDF进行合并分割

pdftk是非常好用的PDF页面操作工具,能够切割、合并、提取指定页面等。 参考:PDF 合并和分割工具--PDFtk参考官网:PDFtk server: the pdf tool kit 常用包括的功能如下: 合并 PDF; 分割 PDF 页面; 旋转 PDF 页面; PDF 带密码访问; PDF 填加密码; 用 X/FDF 填写 ...

weixin_33850015的博客 3067

Python中通过PyPDF2实现PDF拆分

Python中通过PyPDF2实现PDF拆分

Java 开发打飞机小游戏(附完整源码)

上图 写在前面 技术源于分享,所以今天抽空把自己之前用java做过的小游戏整理贴出来给大家参考学习。java确实不适合写桌面应用,这里只是通过这个游戏让大家理解oop面向对象编程的过程,纯属娱乐。代码写的很简单,也很容易理解,并且注释写的很清楚了,还有问题,自己私下去补课学习。 完整代码 敌飞机 import java.util.Random; 敌飞机: 是飞行物,也是敌人 public class Airplane extends FlyingObject implements Enemy {

一只独孤的程序猿 1万+

用Python批量分割PDF文件,看这篇教程就够了

本文介绍了如何使用Python进行批量分割PDF文件的方法。通过合理的架构设计和代码实现,我们可以快速、高效地完成这一任务。读者可以根据实际需求,进一步优化代码,添加更多功能,实现更多操作。感兴趣的小伙伴,赠送全套Python学习资料,包含面试题、简历资料等具体看下方。一、Python所有方向的学习路线Python所有方向的技术点做的整理,形成各个领域的知识点汇总,它的用处就在于,你可以按照下面的知识点去找对应的学习资源,保证自己学得较为全面。二、Python必备开发工具。

白帽阿叁的博客 1326

基于 Cognex VisionPro 的工业级图像匹配技术全解析

通过本文的深度解析,开发者可以系统掌握 Cognex VisionPro 图像匹配技术的核心原理、开发流程、优化策略及工业级应用。实际项目中,需结合具体场景灵活调整参数,综合运用预处理、特征提取和匹配算法,构建稳定可靠的视觉系统。

品质生活,极致编程。 1594

Python 自动化办公:批量处理 Word、Excel、PDF

它能快速实现对 Word、Excel、PDF 等文件的批量操作,将办公人员从机械重复的劳动中解放出来,不仅提高了工作效率,还能减少人工操作带来的错误,让办公更精准、高效。利用 python-docx 库,先制作成绩单模板,然后从 Excel 表格中读取学生信息和成绩数据,通过脚本批量替换模板中的占位符,短短几分钟就完成了所有成绩单的生成,极大地节省了教师的时间和精力。该库功能全面,支持创建、修改 Word 文档,包括对文本样式、段落格式、表格、图片等元素的操作,非常适合批量处理 Word 文件。

2503_92849134的博客 862

电源设计避坑指南:半桥LLC软启动的5个常见错误及解决方案

本文针对半桥LLC谐振变换器软启动过程中的五个常见设计错误,提供了详细的工程解决方案。重点分析了忽视谐振腔初始状态导致的电流冲击、软启动斜坡与环路带宽不匹配、开环到闭环切换时机不当、变压器偏磁以及参数未考虑边界条件等问题,并给出了包括主动预充电、自适应斜坡、最佳切换点判定等实用调试技巧,帮助工程师实现平稳可靠的电源启动。

weixin_29260291的博客 281

滤波器设计实战:Filter Solutions软件从入门到精通

本文是Filter Solutions滤波器设计软件的实战指南,从入门到精通。通过设计一个低通数字滤波器的完整流程,详细讲解了参数设置、FIR/IIR选择、窗函数及逼近函数应用。文章重点介绍了如何利用这款经典工具高效完成滤波器设计、性能权衡,并将设计成果导出至MATLAB等平台进行实际验证与应用,是信号处理工程师提升效率的实用参考。

weixin_29095049的博客 531

Python 办公实战:实现 PDF 文件的拆分、合并、加密与水印工具

可对一个文件夹下的所有 PDF 添加统一加密,适用于企业档案、文件共享前的批处理。可将“保密”、“公司机密”等作为水印模板添加到所有页面。适用于 OCR 或 AI 进一步分析,如问答、摘要提取。准备一个水印 PDF(例如内容是“保密”两字)可用于预览页图或生成压缩图片供移动端查看。使用 PyPDF2 将水印页合并到原始页。选中 PDF → 拆分 → 保存路径选择。合同、报告、发票、简历等文档传输。拆分每页 PDF → 手动另存。转图片 → 批量截图、手工操作。拖入多个 PDF → 合并按钮。

2501_92613570的博客 1178

BUCK降压电路设计实战:从理论到PCB的完整指南

本文详细介绍了BUCK降压电路的设计实战,从基础原理到PCB布局的完整指南。通过关键部件选型、PCB布局黄金法则和调试技巧,帮助工程师高效设计稳定可靠的开关电源。特别针对电感、MOSFET和电容选型提供实用公式和避坑指南,并分享高温环境下的工程经验与测试方法。

weixin_33744141的博客 453

Python 办公技巧:PDF 自动化处理

解析文本、合并拆分文件、处理表单、转换格式、添加水印与签章、生成报表, OCR 文字识别

一枚有趣的灵魂~享受编程带来的快乐 1331

GNSS数据资源全解析:从DCB到BSX文件的下载与应用指南

本文系统解析了GNSS数据处理所需的核心数据资源,包括DCB、BSX、SP3、CLK等关键文件的官方下载路径与应用方法。详细介绍了CDDIS、武汉大学镜像站等权威数据源,并提供了从数据下载到实际应用的完整指南,帮助用户高效获取GNSS数据,提升精密定位处理效率。

weixin_29246195的博客 141

C语言从句柄到对象 (一) —— 全局变量的噩梦与“多实例”的救赎

本文探讨了嵌入式开发中句柄(Handle)的概念与应用。通过电机控制案例,分析了传统单例模式在扩展性上的局限,并展示了如何通过句柄实现代码复用:将电机状态封装为结构体,通过指针(句柄)传递实例数据,使同一套逻辑可操作多个实例。文章比较了单例模式与句柄模式的适用场景,建议底层驱动库默认采用句柄模式以提高扩展性。最后指出当前实现仍存在数据暴露风险,预告下期将介绍不透明指针技术实现更安全的封装。全文揭示了句柄作为C语言实现模块化和面向对象设计的关键作用。

一路往蓝-Anbo 的博客 1340

办公自动化必修课:用Python打造PDF全能处理工具

每天面对堆积如山的PDF文件,你是否也经历过这些崩溃瞬间:客户发来的合同需要逐页拆分重新组卷,月度报告要合并成册却总漏页,机密文件忘记加密差点酿成大祸,精心设计的方案被随意复制传播……这些看似简单的文档操作,正在悄悄吞噬着职场人的工作效率。今天我们将用Python构建一个PDF处理工具箱,涵盖拆分、合并、加密、水印四大核心功能。这不是晦涩的学术教程,而是手把手带你实现从工具使用到原理剖析的完整链路,让PDF处理像拼乐高一样简单有趣。

这家伙很懒,什么都没有留下 722

Untiy之如何实现AI+MR (Pico4u 相机推流MR画面给Server做实时AI图像识别)

本文介绍了基于Pico4U企业版开发AI+MR应用的实现方案。文章详细说明了硬件准备步骤,包括购买企业版设备、申请相机权限和注册管理平台。重点讲解了Unity开发中获取摄像头画面的两种技术方案:通过Overlay直接渲染到Android Surface,或使用API获取图像数据转换为Texture。提供了完整的代码示例和权限配置说明,并揭示了底层通过JNI调用Android原生API的技术原理。该方案适用于带电操作等实习场景,可提升安全性和学习趣味性。

TxNet 1340

Python办公自动化(2)对word&pdf的操作

对word文档进行操作,有遍历文档与表格,检索关键字,生成新文件并定义其样式; 对pdf进行操作,生成,读取、合并、拆分、加密pdf文件。

Tttian622的博客 1369

SAP B1中文培訓教材_SDK

公司内部培训资料,对开发工具 ,DIAPI, UIAPI,Add-ON有详细解说

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

Python办公自动化:用pypdf库5分钟搞定PDF批量合并与拆分(附实战代码)

本文详细介绍了如何使用Python的pypdf库快速实现PDF文件的批量合并与拆分。通过清晰的实战代码,展示了从环境准备到核心操作(如合并周报、拆分合同)的完整流程,并提供了处理加密文件、添加元数据及构建命令行工具等进阶技巧,帮助办公人员大幅提升文档处理效率。

brandy的博客 193

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

“color办公助手”功能解析

color办公助手(V1.0)是一款完全免费的多功能办公辅助软件,集成了文本编辑、PDF处理、Word文档操作等多种实用功能,采用图形化界面设计,操作简单便捷,支持快捷键操作,大幅提升办公效率。软件适用于日常办公中文本处理、文档格式转换、PDF文件管理等场景,满足用户多样化的办公需求。

m0_73311324的博客 459

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

Python办公自动化:PDF拆分提取加水印的实战工作流

PDF处理是现代办公中高频、刚需且易被低估的技术基础能力。它本质是解析文档结构、提取语义内容、执行精准编辑并保障输出质量的一整套工程实践。理解PDF的协议栈特性(如文本图层/扫描图像/加密机制)是选择合理工具链的前提;而pypdf、pdfplumber、reportlab与poppler的分层组合,兼顾了稳定性、精度与可控性。其技术价值不仅在于替代Adobe Acrobat等商业软件,更在于实现离线、可审计、可复现的敏感文档处理——尤其适用于财务合同、发票扫描、培训材料等典型场景。本文聚焦真实办公中的文本提

weixin_33404102的博客 284

Python图片批量处理与PDF自动化生成完整指南

图像处理是现代办公自动化的核心技术之一,涉及图片格式转换、尺寸调整、质量压缩等基础操作原理。通过Python编程实现批量处理,能够显著提升工作效率并减少人工错误。在技术价值层面,自动化处理方案为企业节省了大量人力成本,特别适用于商品图片管理、文档数字化等应用场景。Pillow作为Python生态中最流行的图像处理库,提供了丰富的API接口支持各种图片操作需求。结合img2pdf、ReportLab等PDF处理工具,可以构建完整的图片转PDF工作流。本文基于Python图像处理和PDF生成技术,详细介绍了从单

weixin_34068198的博客 384

pbpython办公文档处理:PPT和PDF批量操作完整解决方案

在现代办公环境中,高效处理PPT演示文稿和PDF文档是提升工作效率的关键。**pbpython**作为专注于实用业务Python解决方案的项目,提供了一系列强大工具,帮助用户轻松实现PPT和PDF的批量操作。无论是自动生成报告、分析幻灯片结构,还是拆分大型PDF文件,pbpython都能提供简单而高效的解决方案。 ## 为什么选择pbpython处理办公文档? 传统的办公文档处理往往依赖手动操

gitblog_01134的博客 1091
上一篇: 5个必须了解的的Python AI库
下一篇: 零基础自学python,作为过来人告诉你,这些坑一定要避开......
大模型-小原
博客等级 码龄4年 2689粉丝 212原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值