一、界面的设计(Qt Designer)

代码:

# -*- coding: utf-8 -*- # Form implementation generated from reading ui file 'pdf2jpg.ui' # # Created by: PyQt5 UI code generator 5.15.0 # # WARNING: Any manual changes made to this file will be lost when pyuic5 is # run again. Do not edit this file unless you know what you are doing. from PyQt5 import QtCore, QtGui, QtWidgets class Ui_Dialog_main(object): def setupUi(self, Dialog_main): Dialog_main.setObjectName("Dialog_main") Dialog_main.resize(429, 112) Dialog_main.setMinimumSize(QtCore.QSize(429, 112)) Dialog_main.setMaximumSize(QtCore.QSize(429, 112)) icon = QtGui.QIcon() icon.addPixmap(QtGui.QPixmap("baby.jpg"), QtGui.QIcon.Normal, QtGui.QIcon.Off) Dialog_main.setWindowIcon(icon) self.pushButton_ok = QtWidgets.QPushButton(Dialog_main) self.pushButton_ok.setGeometry(QtCore.QRect(240, 80, 75, 23)) self.pushButton_ok.setObjectName("pushButton_ok") self.pushButton_cancel = QtWidgets.QPushButton(Dialog_main) self.pushButton_cancel.setGeometry(QtCore.QRect(340, 80, 75, 23)) self.pushButton_cancel.setObjectName("pushButton_cancel") self.lineEdit_file = QtWidgets.QLineEdit(Dialog_main) self.lineEdit_file.setGeometry(QtCore.QRect(130, 10, 241, 20)) self.lineEdit_file.setObjectName("lineEdit_file") self.lineEdit_fold = QtWidgets.QLineEdit(Dialog_main) self.lineEdit_fold.setGeometry(QtCore.QRect(130, 40, 241, 20)) self.lineEdit_fold.setObjectName("lineEdit_fold") self.label_file = QtWidgets.QLabel(Dialog_main) self.label_file.setGeometry(QtCore.QRect(10, 10, 111, 16)) self.label_file.setObjectName("label_file") self.label_fold = QtWidgets.QLabel(Dialog_main) self.label_fold.setGeometry(QtCore.QRect(10, 40, 91, 16)) self.label_fold.setObjectName("label_fold") self.pushButton_add = QtWidgets.QPushButton(Dialog_main) self.pushButton_add.setGeometry(QtCore.QRect(380, 10, 41, 23)) self.pushButton_add.setObjectName("pushButton_add") self.pushButton_add2 = QtWidgets.QPushButton(Dialog_main) self.pushButton_add2.setGeometry(QtCore.QRect(380, 40, 41, 23)) self.pushButton_add2.setObjectName("pushButton_add2") self.retranslateUi(Dialog_main) self.pushButton_cancel.clicked.connect(Dialog_main.close) QtCore.QMetaObject.connectSlotsByName(Dialog_main) def retranslateUi(self, Dialog_main): _translate = QtCore.QCoreApplication.translate Dialog_main.setWindowTitle(_translate("Dialog_main", "pdf2jpg")) self.pushButton_ok.setText(_translate("Dialog_main", "OK")) self.pushButton_cancel.setText(_translate("Dialog_main", "Cancel")) self.label_file.setText(_translate("Dialog_main", "选择需转换的文件")) self.label_fold.setText(_translate("Dialog_main", "选择输出文件夹")) self.pushButton_add.setText(_translate("Dialog_main", "添加")) self.pushButton_add2.setText(_translate("Dialog_main", "添加"))

主程序代码:

from PyQt5 import QtWidgets from pdf2jpg import Ui_Dialog_main # 导入ui文件转换后的py文件 from PyQt5.QtWidgets import QFileDialog import pandas as pd import fitz from operator import itemgetter import os,sys import time #from saveFile import a_save_txt class mywindow(QtWidgets.QWidget, Ui_Dialog_main): def __init__ (self): super(mywindow, self).__init__() self.setupUi(self) self.pushButton_add2.clicked.connect(self.write_folder) self.pushButton_add.clicked.connect(self.read_file) self.pushButton_ok.clicked.connect(self.process) def read_file(self): #选取文件 filename, filetype =QFileDialog.getOpenFileName(self, "选取文件", "C:/", "Text Files(*.pdf)")#"All Files(*); print(filename, filetype) self.lineEdit_file.setText(filename) def write_folder(self): #选取文件夹 foldername = QFileDialog.getExistingDirectory(self, "选取文件夹", "C:/") print(foldername) self.lineEdit_fold.setText(foldername) # 进行处理 def process(self): try: #获取文件路径 file_path = self.lineEdit_file.text() #取文件名 fname=os.path.splitext(file_path) filename=os.path.split(fname[0]) print(filename) print(filename[1]) #获取文件夹路径 folder_path = self.lineEdit_fold.text()+"/"+filename[1] sTime = time.time() pdfDoc = fitz.open(file_path) for pg in range(pdfDoc.pageCount): page = pdfDoc[pg] pix = page.getPixmap(alpha=False) # 默认是720*x尺寸 if not os.path.exists(folder_path): os.makedirs(folder_path) pix.writePNG(folder_path + '/' + 'images_%s.jpg' % pg) # 将图片写入指定的文件夹内 #读取文本 # # 读取文件 #my_df = pd.read_csv(file_path, encoding = 'mbcs') # 中间可以进行对文件的任意操作 # 进行csv输出 #my_df.to_csv(folder_path + 'result.csv') eTime = time.time() s = eTime - sTime print('花费的时间为:%.2f秒' % (s)) success_result = r'转换成功!' self.setWindowTitle(success_result) #打开成功后的文件夹 os.startfile(folder_path) except: fail_result = r'转换失败!' self.setWindowTitle(fail_result) if __name__=="__main__": import sys app=QtWidgets.QApplication(sys.argv) ui = mywindow() ui.show() sys.exit(app.exec_())

经测试可以通过

生成可执行文件。

>pyinstaller -F -w pdf2jpg_server.py


此可执行文件有需要的可留言。

完成后自动打开所在文件夹。收工。下一步接着完善。