当前位置: 首页 > article >正文

pyqt5 设计pdf 和word文件互相转换小程序

 给自己编写一个免费简单的设计pdf 和word文件互相转换小程序,使用pyqt5 做ui设计。

代码如下:

# 导入必要的库和模块
from PyQt5 import QtCore, QtWidgets
from PyQt5.QtWidgets import QMainWindow, QApplication, QFileDialog
from pdf2docx import Converter
from docx2pdf import convert
import re
import sys

# 设置应用程序的显示属性,启用高DPI缩放
QtWidgets.QApplication.setAttribute(QtCore.Qt.AA_EnableHighDpiScaling)

# 定义主窗口类,继承自QMainWindow
class Ui_MainWindow(QMainWindow):
    def __init__(self):
        super(Ui_MainWindow, self).__init__()  # 调用父类的构造函数
        self.setupUi(self)  # 初始化窗体设置

    # 设置UI界面的方法
    def setupUi(self, MainWindow):
        MainWindow.setObjectName("MainWindow")  # 设置窗口对象名称
        MainWindow.resize(463, 107)  # 设置窗口大小
        MainWindow.setStyleSheet("")  # 设置窗口样式表
        MainWindow.setWindowFlags(QtCore.Qt.MSWindowsFixedSizeDialogHint)  # 只显示最小化和关闭按钮
        self.centralwidget = QtWidgets.QWidget(MainWindow)  # 创建中央部件
        self.centralwidget.setObjectName("centralwidget")  # 设置中央部件对象名称
        self.btopenFile = QtWidgets.QPushButton(self.centralwidget)  # 创建打开文件按钮
        self.btopenFile.setGeometry(QtCore.QRect(290, 20, 75, 23))  # 设置按钮位置和大小
        self.btopenFile.setObjectName("btopenFile")  # 设置按钮对象名称
        self.edit_openFilePwd = QtWidgets.QLineEdit(self.centralwidget)  # 创建输入框用于显示打开的文件路径
        self.edit_openFilePwd.setGeometry(QtCore.QRect(110, 20, 171, 20))  # 设置输入框位置和大小
        self.edit_openFilePwd.setObjectName("edit_openFilePwd")  # 设置输入框对象名称
        self.btsaveFile = QtWidgets.QPushButton(self.centralwidget)  # 创建保存文件按钮
        self.btsaveFile.setGeometry(QtCore.QRect(290, 50, 75, 23))  # 设置按钮位置和大小
        self.btsaveFile.setObjectName("btsaveFile")  # 设置按钮对象名称
        self.fileconvert = QtWidgets.QPushButton(self.centralwidget)  # 创建转换文件按钮
        self.fileconvert.setGeometry(QtCore.QRect(380, 30, 61, 51))  # 设置按钮位置和大小
        self.fileconvert.setObjectName("fileconvert")  # 设置按钮对象名称
        self.comboBox = QtWidgets.QComboBox(self.centralwidget)  # 创建下拉选择框
        self.comboBox.setGeometry(QtCore.QRect(10, 30, 91, 31))  # 设置下拉选择框位置和大小
        self.comboBox.setObjectName("comboBox")  # 设置下拉选择框对象名称
        self.comboBox.addItem("")  # 在下拉选择框中添加空选项
        self.comboBox.addItem("")  # 在下拉选择框中添加空选项
        MainWindow.setCentralWidget(self.centralwidget)  # 设置中央部件为主窗口的中心部件
        self.statusbar = QtWidgets.QStatusBar(MainWindow)  # 创建状态栏
        self.statusbar.setObjectName("statusbar")  # 设置状态栏对象名称
        MainWindow.setStatusBar(self.statusbar)  # 将状态栏设置为主窗口的状态栏

        # 连接按钮点击事件到相应的槽函数
        self.btopenFile.clicked.connect(self.openfile)
        self.btsaveFile.clicked.connect(self.savefile)
        self.fileconvert.clicked.connect(self.file_convert)

        # 重新翻译UI界面文本
        self.retranslateUi(MainWindow)
        QtCore.QMetaObject.connectSlotsByName(MainWindow)  # 自动连接信号和槽

    # 打开文件的方法
    def openfile(self):
        if self.comboBox.currentText() == 'Pdf 转 Word':  # 如果选择的是PDF转Word
            options = QFileDialog.Options()  # 创建文件对话框选项
            filename = QFileDialog.getOpenFileName(self, "QFileDialog.getOpenFileName()", "", "PDF Files (*.pdf);;All Files (*)", options=options)  # 打开文件对话框获取PDF文件路径
            if filename:
                self.openfilepath = filename[0]  # 获取选中的文件路径
                self.edit_openFilePwd.setText(self.openfilepath)  # 在输入框中显示文件路径
                self.wordfilepath = re.sub(r'\.pdf$', '.docx', self.openfilepath)  # 根据PDF文件路径生成Word文件路径
                self.edit_saveFilePwd.setText(self.wordfilepath)  # 在输入框中显示Word文件路径
                self.statusbar.showMessage(f'Selected file: {self.openfilepath}')  # 在状态栏显示选中的文件路径
        elif self.comboBox.currentText() == 'Word 转 Pdf':  # 如果选择的是Word转PDF
            options = QFileDialog.Options()  # 创建文件对话框选项
            filename = QFileDialog.getOpenFileName(self, "QFileDialog.getOpenFileName()", "", "WORD Files (*.docx);;All Files (*)", options=options)  # 打开文件对话框获取Word文件路径
            if filename:
                self.openfilepath = filename[0]  # 获取选中的文件路径
                self.edit_openFilePwd.setText(self.openfilepath)  # 在输入框中显示文件路径
                self.wordfilepath = re.sub(r'\.docx$', '.pdf', self.openfilepath)  # 根据Word文件路径生成PDF文件路径
                self.edit_saveFilePwd.setText(self.wordfilepath)  # 在输入框中显示PDF文件路径
                self.statusbar.showMessage(f'Selected file: {self.openfilepath}')  # 在状态栏显示选中的文件路径

    # 保存文件的方法
    def savefile(self):
        if self.comboBox.currentText() == 'Pdf 转 Word':  # 如果选择的是PDF转Word
            options = QFileDialog.Options()  # 创建文件对话框选项
            filename = QFileDialog.getSaveFileName(self, "QFileDialog.getOpenFileName()", "", "WORD Files (*.docx);;All Files (*)", options=options)  # 打开文件对话框获取保存路径
            if filename:
                self.savefilepath = filename[0]  # 获取保存路径
                self.edit_saveFilePwd.setText(self.savefilepath)  # 在输入框中显示保存路径
                self.statusbar.showMessage(f'save file: {self.savefilepath}')  # 在状态栏显示保存路径
        elif self.comboBox.currentText() == 'Word 转 Pdf':  # 如果选择的是Word转PDF
            options = QFileDialog.Options()  # 创建文件对话框选项
            filename = QFileDialog.getSaveFileName(self, "QFileDialog.getOpenFileName()", "", "PDF Files (*.pdf);;All Files (*)", options=options)  # 打开文件对话框获取保存路径
            if filename:
                self.savefilepath = filename[0]  # 获取保存路径
                self.edit_saveFilePwd.setText(self.savefilepath)  # 在输入框中显示保存路径
                self.statusbar.showMessage(f'save file: {self.savefilepath}')  # 在状态栏显示保存路径

    # 文件转换的方法
    def file_convert(self):
        if self.comboBox.currentText() == 'Pdf 转 Word':  # 如果选择的是PDF转Word
            try:
                cv = Converter(self.openfilepath)  # 创建PDF转换器对象
                cv.convert(self.wordfilepath, start=0, end=None)  # 执行转换操作
                cv.close()  # 关闭转换器对象
                self.statusbar.showMessage(f'{self.wordfilepath} 转换成功!')  # 在状态栏显示转换成功信息
            except Exception as e:
                self.statusbar.showMessage(f'Error during conversion: {str(e)}')  # 如果发生错误,在状态栏显示错误信息
        elif self.comboBox.currentText() == 'Word 转 Pdf':  # 如果选择的是Word转PDF
            _wordFile = self.edit_openFilePwd.text()  # 获取Word文件路径
            _pdfFile = self.edit_saveFilePwd.text()  # 获取PDF文件路径
            convert(_wordFile, _pdfFile)  # 执行转换操作
            self.statusbar.showMessage(f'{_pdfFile} 转换成功!')  # 在状态栏显示转换成功信息

    # 重新翻译UI界面文本的方法
    def retranslateUi(self, MainWindow):
        _translate = QtCore.QCoreApplication.translate  # 获取翻译函数
        MainWindow.setWindowTitle(_translate("MainWindow", "file_convert"))  # 设置窗口标题
        self.btopenFile.setText(_translate("MainWindow", "打开文件"))  # 设置打开文件按钮文本
        self.btsaveFile.setText(_translate("MainWindow", "保存路径"))  # 设置保存路径按钮文本
        self.fileconvert.setText(_translate("MainWindow", "开始转换"))  # 设置开始转换按钮文本
        self.comboBox.setItemText(0, _translate("MainWindow", "Pdf 转 Word"))  # 设置下拉选择框第一项文本
        self.comboBox.setItemText(1, _translate("MainWindow", "Word 转 Pdf"))  # 设置下拉选择框第二项文本

if __name__ == "__main__":
    app = QApplication(sys.argv)  # 创建应用程序对象
    window = Ui_MainWindow()  # 创建主窗口对象
    window.show()  # 显示主窗口
    sys.exit(app.exec_())  # 进入应用程序的主循环并等待退出


http://www.kler.cn/a/460085.html

相关文章:

  • 2024年大型语言模型(LLMs)的发展回顾
  • 《Xsens动捕与人形机器人训练》讲座将于1月9日下午2:30在线上召开
  • 超高分辨率 图像 分割处理
  • HTTP Scheme 通常指的是在 URL 中用于指定使用 HTTP 协议的方案(scheme)
  • 从企业级 RAG 到 AI Assistant,阿里云 Elasticsearch AI 搜索技术实践
  • [算法] [leetcode-324] 摆动排序 II
  • 二、SQL语言,《数据库系统概念》,原书第7版
  • 【Redis】万字整理 Redis 非关系型数据库的安装与操作
  • Android笔试面试题AI答之Android基础(4)
  • elementui的默认样式修改
  • 备战春招 | 数字IC FPGA笔试题
  • 【从零开始入门unity游戏开发之——C#篇32】C#其他不常用的泛型数据结构类、顺序存储和链式存储
  • Python 爬虫中的反爬策略及详细应对方法
  • 【LLM】Langflow 的简单使用
  • SQL实现新年倒计时功能
  • golang标准库SSH操作示例
  • PHP语言laravel框架中基于Redis的异步队列使用实践与原理
  • 【每日学点鸿蒙知识】中间产物版本号问题、Toast应用外不生效、Dialog键盘问题、WebView cookie、本地缓存
  • 如何判断服务器是否被网络攻击?
  • 【C++】九九乘法表编程题详解与多角度对比分析
  • 整合版canal ha搭建--基于1.1.4版本
  • CSS系列(39)-- Shapes详解
  • 服务器反应慢,秒杀设计
  • 实验七 函数2
  • Flutter-插件 scroll-to-index 实现 listView 滚动到指定索引位置
  • 第7章:基于EfficientNet v2网络实现的迁移学习图像分类任务:人体皮肤病识别