场景描述:

日常处理文件时,经常遇到将word批量转换成pdf文件,以及合并多个pdf文件的需求。
那么问题来了
1.市面上的office程序只能支持单个文件转换,批量与合并是收费的。
2.而网页上的在线转换则有可能导致隐私泄露,且无法在内网使用。
所以,为了省时省力省心,我们用Python开发一个可在内网使用的PDF批量转换-合并应用程序。


需求分析:

1.需要批量转换word为pdf格式
2.动态打印日志显示状态
3.转换后可直接打开落地文件绝对路径


解决方案:

1.准备开发环境

提前准备好Python开发环境,并安装pip,win32com,pyinstaller

2.引入tkinter,win32com等包

from tkinter import *
import os
from PIL import Image
import time
from tkinter import filedialog,messagebox
import tkinter
import pythoncom
import time
import win32com.client

3.设置全局变量动态打印日志

LOG_LINE_NUM = 0

4.定义类并设置页面UI

class MY_GUI():def __init__(self,init_window_name):self.init_window_name = init_window_name#设置窗口def set_init_window(self):self.init_window_name.title("PDF转换工具_V1.0")           #窗口名self.init_window_name.geometry('1068x681+400+10')#标签self.operate_data_label = Label(self.init_window_name, text="操作")self.operate_data_label.grid(row=0, column=0)self.result_data_label = Label(self.init_window_name, text="输出结果")self.result_data_label.grid(row=0, column=12)self.log_label = Label(self.init_window_name, text="日志")self.log_label.grid(row=9, column=0)#文本框self.result_data_Text = Text(self.init_window_name, width=70, height=49)  #处理结果展示self.result_data_Text.grid(row=1, column=12, rowspan=15, columnspan=10)self.log_data_Text = Text(self.init_window_name, width=66, height=9)  # 日志框self.log_data_Text.grid(row=10, column=0, columnspan=12)#按钮self.str_trans_to_md5_button = Button(self.init_window_name, text="①上传文件", width=10,command=self.upload_files)  # 调用内部方法  加()为直接调用self.str_trans_to_md5_button.grid(row=3, column=4)self.str_trans_to_md5_button1 = Button(self.init_window_name, text="②转换PDF", bg="lightblue", width=10,command=self.trans_files)  # 调用内部方法  加()为直接调用self.str_trans_to_md5_button1.grid(row=4, column=4)self.str_trans_to_md5_button2 = Button(self.init_window_name, text="③打开文件夹", bg="yellow", width=10,command=self.open_folder)  # 调用内部方法  加()为直接调用self.str_trans_to_md5_button2.grid(row=5, column=4)self.str_trans_to_md5_button2 = Button(self.init_window_name, text="请阿丸喝奶茶o( ̄▽ ̄)d", bg="pink", width=18,command=self.open_money)  # 调用内部方法  加()为直接调用self.str_trans_to_md5_button2.grid(row=9, column=9)

5.定义上传、转换、打开文件夹的功能函数

def upload_files(self):global file_infosfile_infos = filedialog.askopenfilenames(title='可选择1个或多个文件')  # askopenfilename 1次上传1个;askopenfilenames1次上传多个for file_info in file_infos:self.result_data_Text.insert(END, file_info +'已上传!'+ '\n')  # 更新text中内容self.result_data_Text.update()def trans_files(self):for file_info in file_infos:in_file=file_infoprint(in_file)out_file=file_info.split(".")[0]+".pdf"print(out_file)pythoncom.CoInitialize()if file_info.split('.')[-1] in ('doc','docx'):word = win32com.client.Dispatch('Word.Application')elif file_info.split('.')[-1] in ('xls','xlsx'):word = win32com.client.Dispatch('Excel.Application')elif file_info.split('.')[-1] in ('ppt','pptx'):word = win32com.client.Dispatch('PowerPoint.Application')doc = word.Documents.Open(in_file)doc.SaveAs(out_file, FileFormat=17)doc.Close()time.sleep(1)self.result_data_Text.insert(END, file_info +'已转换成PDF!'+ '\n')  # 更新text中内容self.result_data_Text.update()def open_folder(self):start_directory = file_infos[0].split('/')[0:-1]end_directory = '/'.join(start_directory)os.startfile(end_directory)

6.定义时间、日志打印功能函数

   #获取当前时间def get_current_time(self):current_time = time.strftime('%Y-%m-%d %H:%M:%S',time.localtime(time.time()))return current_time#日志动态打印def write_log_to_Text(self,logmsg):global LOG_LINE_NUMcurrent_time = self.get_current_time()logmsg_in = str(current_time) +" " + str(logmsg) + "\n"      #换行if LOG_LINE_NUM <= 7:self.log_data_Text.insert(END, logmsg_in)LOG_LINE_NUM = LOG_LINE_NUM + 1else:self.log_data_Text.delete(1.0,2.0)self.log_data_Text.insert(END, logmsg_in)

7.初始化功能函数

def gui_start():init_window = Tk()              #实例化出一个父窗口ZMJ_PORTAL = MY_GUI(init_window)# 设置根窗口默认属性ZMJ_PORTAL.set_init_window()init_window.mainloop()          #父窗口进入事件循环,可以理解为保持窗口运行,否则界面不展示gui_start()

8.打包exe

#隐藏控制台
pyinstall -F -i -w 图片.ico 文件.py
#使用控制台
pyinstall -F -i -c 图片.ico 文件.py


【办公自动化】基于Python开发的PDF批量转换-合并应用程序相关推荐

  1. 利用pypdf2 安装包 基于 python 制作的PDF 文档合并脚本

    本篇文章主要讲解,利用python的安装包 pypdf2 制作的可视化pdf合并工具 作者:任聪聪 日期:2022年1月27日 使用效果 说明: 1.文件列表可以手动进行编辑,一行一个. 2.可以指定 ...

  2. 免费PDF批量转换图片工具

    免费PDF批量转换图片工具 免费PDF批量转换图片工具 程序界面 测试效果 程序说明 使用说明 使用注意 开发环境 测试环境 程序版本 源文章出处 下载地址(百度云) 免费PDF批量转换图片工具 一款 ...

  3. Python用img2pdf库批量转换图片为PDF文件

    Python用img2pdf库批量转换图片为PDF文件 import os #导入os库 import time #导入时间库生成时间戳 import img2pdf #导入img2pdf库, 安装命 ...

  4. python开发的著名软件公司_软件开发公司_软件外包_项目外包平台基于Python开发一个全文检索系统...

    基于Python开发一个全文检索系统.功能要求为: 使用全文检索引擎对文本进行检索.文本的格式为Word.PDF.TXT. 同时按数据域进行复合条件检索.数据域指文本对应的信息,例如创建人.文件编号. ...

  5. 基于python fitz的pdf文件处理器--已开源

    "音符文档助手"软件操作手册 目录 1.软件介绍 2.界面展示 3.安装教程 4.操作手册 5.注意事项 6.作者鸣谢 7.代码示例 [介绍] 音符文档助手PC端是一款实现word ...

  6. python处理表格数据-基于Python快速处理PDF表格数据

    我们有下面一张PDF格式存储的表格,现在需要使用Python将它提取出来. 使用Python提取表格数据需要使用pdfplumber模块,打开CMD,安装代码如下: pip install pdfpl ...

  7. pythonarcgis插件_【直播】基于Python开发ArcGIS插件:Python Add-in丨城市数据派

    原标题:[直播]基于Python开发ArcGIS插件:Python Add-in丨城市数据派 Add-in是什么? Add-in(加载项)是一种自定义项(例如工具栏上的工具集合),Add-in可以插入 ...

  8. python 知识管理系统_MrDoc: 基于Python开发的Markdown在线文档系统,适合作为个人和小型团队的文档、笔记和知识管理工具...

    MrDoc觅道文档 - 记录文档.汇聚思想 个人和小型团队的笔记.文档.知识管理私有化部署方案 简介 MrDoc 是基于Python开发的在线文档系统,适合作为个人和小型团队的文档.知识和笔记管理工具 ...

  9. 学习PySide2基于Python开发人工智能系统应用

    学习PySide2基于Python开发人工智能系统应用 文章目录 学习PySide2基于Python开发人工智能系统应用 摘要 模型训练 一.学习PySide2使用 第1步 环境安装 第2步 配置好Q ...

最新文章

  1. 依图颜水成:AI芯片设计要深度融合算法,才能实现极致性能
  2. 阿里邮箱发布“Mail+”战略 有望与畅捷通工作圈互通互联
  3. Java编程设计---数组Arrays
  4. 第七节:ES6为数值做了哪些扩展?
  5. 说一下安卓的touch事件分发机制
  6. 西餐美食店响应式网站模板
  7. 对流扩散方程matlab向前向后差分,解纯对流方程几种向后特征差分格式的比较
  8. Plugin 框架 开发实录
  9. python hashlib_python hashlib模块
  10. 容易忽视但是功能灰常强大的Java API(二. 读写对象)
  11. 电脑鼠标单击变成了双击如何恢复
  12. Red Bend与阿朗推LTE移动设备管理 使4G设备兼容OMA DM
  13. learn git branching 重新开始
  14. mysql分组查询学生平均年龄_8.21MySQL(四)基本查询语句及方法、连表、子查询...
  15. obj、fbx 转 3dtiles(免费转换工具)
  16. 强化学习——蒙特卡洛方法
  17. 计算机会计实务好学吗,会计电算化难吗
  18. 孙鑫vc++ 第六课 笔记 菜单的工作原理及编写应用
  19. 查询数据库中所有表的记录数
  20. 线性规划问题及单纯形法-单纯形法原理

热门文章

  1. PINO——一个开放的机器人项目
  2. 基于Sphinx的中文全文检索引擎Coreseek的安装
  3. 5张图带你了解Pulsar的存储引擎BookKeeper
  4. 忘记Win7登录密码的解决办法
  5. 【18/M/python】4Sum
  6. 最长上升子序列(LIS)问题的解决及优化
  7. STM32的USART串口通信
  8. Matlab中结构体Struct使用
  9. 如何应用font Awesome矢量字体图标介绍
  10. 《嵌入式 - 嵌入式大杂烩》 处理器架构与指令集