博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
PDF分割--可脱离python环境执行,可传参数,可弹窗的PC端小工具
阅读量:4982 次
发布时间:2019-06-12

本文共 3439 字,大约阅读时间需要 11 分钟。

1.首先,实现功能源码

#!/usr/bin/env python # coding=utf-8 import tkinter.messagebox from tkinter import * from PyPDF2 import PdfFileReader, PdfFileWriter import re # 设置全局变量 filename="" pdf_input="" fp_read_file="" page_count=0 # PDF文件分割 def split_pdf( out_detail):     try:         with open(out_detail, 'r', True, 'utf-8')as fp:             # print(fp)             txt = fp.readlines()             # print(txt)             for detail in txt:  # 打开分割标准文件                 # print(type(detail))                 # print(detail)                 # 如果取到的内容包括“the file to be split is :”                 line_wold = "the file to be split is :"                 if line_wold in detail:                     #  切割获取文件名:                     rule = r'the file to be split is :(.*?.pdf)'                     filename = re.findall(rule, detail)[0].strip()                     print(filename)                     fp_read_file = open(filename, 'rb')                     pdf_input = PdfFileReader(fp_read_file)  # 将要分割的PDF内容格式话                     page_count = pdf_input.getNumPages()  # 获取PDF页数                     print("该文件一共"+str(page_count)+"页")  # 打印页数                     print(filename)                     print("获取文件名完成,开始分割")                     continue                 pages, write_file = detail.split()  # 空格分组                #  write_file, write_ext = os.path.splitext(write_file)  # 用于返回文件名和扩展名元组                 pdf_file = f'{write_file}.pdf'                 # liststr=list(map(int, pages.split('-')))                 # print(type(liststr))                 try:                     start_page, end_page = list(map(int, pages.split('-')))  # 将字符串数组转换成整形数组                     print(start_page)                 except :                     tkinter.Tk().withdraw()                     tkinter.messagebox.showwarning("配置文件", "页数为空或不是正整数,请检查配置文件")                     return                 if start_page < 1:                     # 隐藏主窗口                     tkinter.Tk().withdraw()                     # 消息框提示消息                     tkinter.messagebox.showwarning("配置文件","起始页面不能为0!请重新编辑页面")                     return                 start_page -= 1                 # 如果输入页数大于最大页数,则最大页数                 if end_page > page_count:                     end_page=page_count                     # 隐藏主窗口                     tkinter.Tk().withdraw();                     tkinter.messagebox.showwarning("配置文件", "分割页数超过了PDF的页数,已调整为结束页为最后一页"+str(page_count))                 try:                     print(f'开始分割{start_page}页-{end_page}页,保存为{pdf_file}......')                     pdf_output = PdfFileWriter()  # 实例一个 PDF文件编写器                     for i in range(start_page, end_page):                         pdf_output.addPage(pdf_input.getPage(i))                     with open(pdf_file, 'wb') as sub_fp:                         pdf_output.write(sub_fp)                     print(f'完成分割{start_page}页-{end_page}页,保存为{pdf_file}!')                 except IndexError:                     print(f'分割页数超过了PDF的页数')  # 这个部分其实可以不用try,前面已经处理过了     except Exception as e:         print(e)     finally:         fp_read_file.close() split_pdf( 'configure.txt') 2.实现打包成脱离python环境的.EXE程序 我的代码路径,在这个路径下,按住shift+鼠标右键,进入命令窗口

 输入命令实现打包,pyinstaller包自行用pip install 去下载就好

 

打包成功之后会在目录下生成build和dist文件夹,exe文件在dist文件夹下

 

 3.如何使用

这个工具需要传入参数,你要分割 的PDF文件全称,配置分割页数,分割后的文件名称,在配置文件中写好

4.双击exe文件,即可分割

 

作为初学者自己搞出这个东西还是蛮开心,分享给各位,希望对你有帮助!!!

欢迎转载!请加原创网址:

 

 

 

 

 

 

 

转载于:https://www.cnblogs.com/sunmoon1993/p/11063034.html

你可能感兴趣的文章
Exponentiation
查看>>
本地jar上传到本地仓库
查看>>
7.14T3
查看>>
四则运算C++带Qt界面版本,吾王镇楼。。。。。
查看>>
各种获取时间的方法包含各类时间格式
查看>>
安卓7.0手机拍照闪退问题解决
查看>>
黑马程序员------IO(一)
查看>>
springcloud的配置
查看>>
ME525+ Defy+ 刷机指南[zz]
查看>>
支持触屏的jQuery轮播图插件
查看>>
Codesmith
查看>>
差一点搞混了Transactional注解
查看>>
javascript基本函数
查看>>
C#转义字符
查看>>
前端公共库cdn服务推荐//提高加载速度/节省流量
查看>>
python openpyxl内存不主动释放 ——关闭Excel工作簿后内存依旧(MemoryError)
查看>>
snprintf 返回值陷阱 重新封装
查看>>
asp.net GridView多行表头的实现,合并表头
查看>>
C#套打
查看>>
PolyCluster: Minimum Fragment Disagreement Clustering for Polyploid Phasing 多聚类:用于多倍体的最小碎片不一致聚类...
查看>>