yQt5实现pdf转word功能怎样做,过程是什么
Admin 2022-08-11 群英技术资讯 889 次浏览
这篇文章给大家分享的是“yQt5实现pdf转word功能怎样做,过程是什么”,对大家学习和理解有一定的参考价值和帮助,有这方面学习需要的朋友,接下来就跟随小编一起学习一下吧。本文就是基于PyQt5完成的pdf转word功能,先看界面:

from PyQt5 import QtCore, QtGui, QtWidgets
import base64
import os
from return_png import img as retu # 引入img变量,赋别名为pdf_cf
class Ui_PdfZ(object):
def setupUi(self, PdfZ):
tmp = open('return.png', 'wb') # 创建临时的文件
tmp.write(base64.b64decode(retu)) # 把这个one图片解码出来,写入文件中去。
tmp.close()
PdfZ.setObjectName("PdfZ")
PdfZ.resize(1400, 814)
PdfZ.setMinimumSize(QtCore.QSize(1400, 814))
PdfZ.setMaximumSize(QtCore.QSize(1400, 814))
palette = QtGui.QPalette()
brush = QtGui.QBrush(QtGui.QColor(255, 255, 255))
brush.setStyle(QtCore.Qt.SolidPattern)
palette.setBrush(QtGui.QPalette.Active, QtGui.QPalette.Base, brush)
brush = QtGui.QBrush(QtGui.QColor(255, 255, 255))
brush.setStyle(QtCore.Qt.SolidPattern)
palette.setBrush(QtGui.QPalette.Active, QtGui.QPalette.Window, brush)
brush = QtGui.QBrush(QtGui.QColor(255, 255, 255))
brush.setStyle(QtCore.Qt.SolidPattern)
palette.setBrush(QtGui.QPalette.Inactive, QtGui.QPalette.Base, brush)
brush = QtGui.QBrush(QtGui.QColor(255, 255, 255))
brush.setStyle(QtCore.Qt.SolidPattern)
palette.setBrush(QtGui.QPalette.Inactive, QtGui.QPalette.Window, brush)
brush = QtGui.QBrush(QtGui.QColor(255, 255, 255))
brush.setStyle(QtCore.Qt.SolidPattern)
palette.setBrush(QtGui.QPalette.Disabled, QtGui.QPalette.Base, brush)
brush = QtGui.QBrush(QtGui.QColor(255, 255, 255))
brush.setStyle(QtCore.Qt.SolidPattern)
palette.setBrush(QtGui.QPalette.Disabled, QtGui.QPalette.Window, brush)
PdfZ.setPalette(palette)
self.Reback = QtWidgets.QToolButton(PdfZ)
self.Reback.setGeometry(QtCore.QRect(10, 10, 51, 41))
palette = QtGui.QPalette()
brush = QtGui.QBrush(QtGui.QColor(255, 255, 255))
brush.setStyle(QtCore.Qt.SolidPattern)
palette.setBrush(QtGui.QPalette.Active, QtGui.QPalette.Button, brush)
brush = QtGui.QBrush(QtGui.QColor(255, 255, 255))
brush.setStyle(QtCore.Qt.SolidPattern)
palette.setBrush(QtGui.QPalette.Active, QtGui.QPalette.ToolTipBase, brush)
brush = QtGui.QBrush(QtGui.QColor(255, 255, 255))
brush.setStyle(QtCore.Qt.SolidPattern)
palette.setBrush(QtGui.QPalette.Inactive, QtGui.QPalette.Button, brush)
brush = QtGui.QBrush(QtGui.QColor(255, 255, 255))
brush.setStyle(QtCore.Qt.SolidPattern)
palette.setBrush(QtGui.QPalette.Inactive, QtGui.QPalette.ToolTipBase, brush)
brush = QtGui.QBrush(QtGui.QColor(255, 255, 255))
brush.setStyle(QtCore.Qt.SolidPattern)
palette.setBrush(QtGui.QPalette.Disabled, QtGui.QPalette.Button, brush)
brush = QtGui.QBrush(QtGui.QColor(255, 255, 255))
brush.setStyle(QtCore.Qt.SolidPattern)
palette.setBrush(QtGui.QPalette.Disabled, QtGui.QPalette.ToolTipBase, brush)
self.Reback.setPalette(palette)
icon = QtGui.QIcon()
icon.addPixmap(QtGui.QPixmap("return.png"), QtGui.QIcon.Normal, QtGui.QIcon.Off)
self.Reback.setIcon(icon)
self.Reback.setIconSize(QtCore.QSize(100, 100))
self.Reback.setAutoRaise(True)
self.Reback.setObjectName("Reback")
self.label = QtWidgets.QLabel(PdfZ)
self.label.setGeometry(QtCore.QRect(88, 8, 171, 41))
font = QtGui.QFont()
font.setFamily("微软雅黑")
font.setPointSize(16)
font.setBold(True)
font.setWeight(75)
self.label.setFont(font)
self.label.setObjectName("label")
self.frame = QtWidgets.QFrame(PdfZ)
self.frame.setGeometry(QtCore.QRect(20, 60, 1351, 161))
palette = QtGui.QPalette()
brush = QtGui.QBrush(QtGui.QColor(255, 255, 255))
brush.setStyle(QtCore.Qt.SolidPattern)
palette.setBrush(QtGui.QPalette.Active, QtGui.QPalette.Base, brush)
brush = QtGui.QBrush(QtGui.QColor(245, 255, 250))
brush.setStyle(QtCore.Qt.SolidPattern)
palette.setBrush(QtGui.QPalette.Active, QtGui.QPalette.Window, brush)
brush = QtGui.QBrush(QtGui.QColor(255, 255, 255))
brush.setStyle(QtCore.Qt.SolidPattern)
palette.setBrush(QtGui.QPalette.Inactive, QtGui.QPalette.Base, brush)
brush = QtGui.QBrush(QtGui.QColor(245, 255, 250))
brush.setStyle(QtCore.Qt.SolidPattern)
palette.setBrush(QtGui.QPalette.Inactive, QtGui.QPalette.Window, brush)
brush = QtGui.QBrush(QtGui.QColor(245, 255, 250))
brush.setStyle(QtCore.Qt.SolidPattern)
palette.setBrush(QtGui.QPalette.Disabled, QtGui.QPalette.Base, brush)
brush = QtGui.QBrush(QtGui.QColor(245, 255, 250))
brush.setStyle(QtCore.Qt.SolidPattern)
palette.setBrush(QtGui.QPalette.Disabled, QtGui.QPalette.Window, brush)
self.frame.setPalette(palette)
self.frame.setAutoFillBackground(True)
self.frame.setFrameShape(QtWidgets.QFrame.Box)
self.frame.setFrameShadow(QtWidgets.QFrame.Plain)
self.frame.setLineWidth(1)
self.frame.setMidLineWidth(0)
self.frame.setObjectName("frame")
self.scwd = QtWidgets.QPushButton(self.frame)
self.scwd.setGeometry(QtCore.QRect(570, 30, 191, 61))
palette = QtGui.QPalette()
brush = QtGui.QBrush(QtGui.QColor(0, 217, 159))
brush.setStyle(QtCore.Qt.SolidPattern)
palette.setBrush(QtGui.QPalette.Active, QtGui.QPalette.Button, brush)
brush = QtGui.QBrush(QtGui.QColor(255, 255, 255))
brush.setStyle(QtCore.Qt.SolidPattern)
palette.setBrush(QtGui.QPalette.Active, QtGui.QPalette.Text, brush)
brush = QtGui.QBrush(QtGui.QColor(255, 255, 255))
brush.setStyle(QtCore.Qt.SolidPattern)
palette.setBrush(QtGui.QPalette.Active, QtGui.QPalette.ButtonText, brush)
brush = QtGui.QBrush(QtGui.QColor(255, 255, 255, 128))
brush.setStyle(QtCore.Qt.SolidPattern)
palette.setBrush(QtGui.QPalette.Active, QtGui.QPalette.PlaceholderText, brush)
brush = QtGui.QBrush(QtGui.QColor(0, 217, 159))
brush.setStyle(QtCore.Qt.SolidPattern)
palette.setBrush(QtGui.QPalette.Inactive, QtGui.QPalette.Button, brush)
brush = QtGui.QBrush(QtGui.QColor(255, 255, 255))
brush.setStyle(QtCore.Qt.SolidPattern)
palette.setBrush(QtGui.QPalette.Inactive, QtGui.QPalette.Text, brush)
brush = QtGui.QBrush(QtGui.QColor(255, 255, 255))
brush.setStyle(QtCore.Qt.SolidPattern)
palette.setBrush(QtGui.QPalette.Inactive, QtGui.QPalette.ButtonText, brush)
brush = QtGui.QBrush(QtGui.QColor(255, 255, 255, 128))
brush.setStyle(QtCore.Qt.SolidPattern)
palette.setBrush(QtGui.QPalette.Inactive, QtGui.QPalette.PlaceholderText, brush)
brush = QtGui.QBrush(QtGui.QColor(0, 217, 159))
brush.setStyle(QtCore.Qt.SolidPattern)
palette.setBrush(QtGui.QPalette.Disabled, QtGui.QPalette.Button, brush)
brush = QtGui.QBrush(QtGui.QColor(120, 120, 120))
brush.setStyle(QtCore.Qt.SolidPattern)
palette.setBrush(QtGui.QPalette.Disabled, QtGui.QPalette.Text, brush)
brush = QtGui.QBrush(QtGui.QColor(120, 120, 120))
brush.setStyle(QtCore.Qt.SolidPattern)
palette.setBrush(QtGui.QPalette.Disabled, QtGui.QPalette.ButtonText, brush)
brush = QtGui.QBrush(QtGui.QColor(0, 0, 0, 128))
brush.setStyle(QtCore.Qt.SolidPattern)
palette.setBrush(QtGui.QPalette.Disabled, QtGui.QPalette.PlaceholderText, brush)
self.scwd.setPalette(palette)
font = QtGui.QFont()
font.setFamily("微软雅黑")
font.setPointSize(16)
font.setBold(True)
font.setWeight(75)
self.scwd.setFont(font)
self.scwd.setAutoFillBackground(True)
self.scwd.setAutoDefault(False)
self.scwd.setDefault(False)
self.scwd.setFlat(True)
self.scwd.setObjectName("scwd")
self.label_2 = QtWidgets.QLabel(self.frame)
self.label_2.setGeometry(QtCore.QRect(620, 100, 131, 21))
font = QtGui.QFont()
font.setFamily("微软雅黑")
self.label_2.setFont(font)
self.label_2.setObjectName("label_2")
self.frame_2 = QtWidgets.QFrame(PdfZ)
self.frame_2.setGeometry(QtCore.QRect(1050, 280, 321, 301))
palette = QtGui.QPalette()
brush = QtGui.QBrush(QtGui.QColor(255, 255, 255))
brush.setStyle(QtCore.Qt.SolidPattern)
palette.setBrush(QtGui.QPalette.Active, QtGui.QPalette.Base, brush)
brush = QtGui.QBrush(QtGui.QColor(245, 255, 250))
brush.setStyle(QtCore.Qt.SolidPattern)
palette.setBrush(QtGui.QPalette.Active, QtGui.QPalette.Window, brush)
brush = QtGui.QBrush(QtGui.QColor(255, 255, 255))
brush.setStyle(QtCore.Qt.SolidPattern)
palette.setBrush(QtGui.QPalette.Inactive, QtGui.QPalette.Base, brush)
brush = QtGui.QBrush(QtGui.QColor(245, 255, 250))
brush.setStyle(QtCore.Qt.SolidPattern)
palette.setBrush(QtGui.QPalette.Inactive, QtGui.QPalette.Window, brush)
brush = QtGui.QBrush(QtGui.QColor(245, 255, 250))
brush.setStyle(QtCore.Qt.SolidPattern)
palette.setBrush(QtGui.QPalette.Disabled, QtGui.QPalette.Base, brush)
brush = QtGui.QBrush(QtGui.QColor(245, 255, 250))
brush.setStyle(QtCore.Qt.SolidPattern)
palette.setBrush(QtGui.QPalette.Disabled, QtGui.QPalette.Window, brush)
self.frame_2.setPalette(palette)
self.frame_2.setAutoFillBackground(True)
self.frame_2.setFrameShape(QtWidgets.QFrame.NoFrame)
self.frame_2.setFrameShadow(QtWidgets.QFrame.Plain)
self.frame_2.setLineWidth(1)
self.frame_2.setMidLineWidth(0)
self.frame_2.setObjectName("frame_2")
self.label_3 = QtWidgets.QLabel(self.frame_2)
self.label_3.setGeometry(QtCore.QRect(20, 20, 191, 31))
font = QtGui.QFont()
font.setFamily("微软雅黑")
font.setPointSize(14)
font.setBold(False)
font.setWeight(50)
self.label_3.setFont(font)
self.label_3.setObjectName("label_3")
self.xzwd = QtWidgets.QPushButton(self.frame_2)
self.xzwd.setGeometry(QtCore.QRect(30, 200, 271, 61))
palette = QtGui.QPalette()
brush = QtGui.QBrush(QtGui.QColor(0, 217, 159))
brush.setStyle(QtCore.Qt.SolidPattern)
palette.setBrush(QtGui.QPalette.Active, QtGui.QPalette.Button, brush)
brush = QtGui.QBrush(QtGui.QColor(255, 255, 255))
brush.setStyle(QtCore.Qt.SolidPattern)
palette.setBrush(QtGui.QPalette.Active, QtGui.QPalette.Text, brush)
brush = QtGui.QBrush(QtGui.QColor(255, 255, 255))
brush.setStyle(QtCore.Qt.SolidPattern)
palette.setBrush(QtGui.QPalette.Active, QtGui.QPalette.ButtonText, brush)
brush = QtGui.QBrush(QtGui.QColor(255, 255, 255, 128))
brush.setStyle(QtCore.Qt.SolidPattern)
palette.setBrush(QtGui.QPalette.Active, QtGui.QPalette.PlaceholderText, brush)
brush = QtGui.QBrush(QtGui.QColor(0, 217, 159))
brush.setStyle(QtCore.Qt.SolidPattern)
palette.setBrush(QtGui.QPalette.Inactive, QtGui.QPalette.Button, brush)
brush = QtGui.QBrush(QtGui.QColor(255, 255, 255))
brush.setStyle(QtCore.Qt.SolidPattern)
palette.setBrush(QtGui.QPalette.Inactive, QtGui.QPalette.Text, brush)
brush = QtGui.QBrush(QtGui.QColor(255, 255, 255))
brush.setStyle(QtCore.Qt.SolidPattern)
palette.setBrush(QtGui.QPalette.Inactive, QtGui.QPalette.ButtonText, brush)
brush = QtGui.QBrush(QtGui.QColor(255, 255, 255, 128))
brush.setStyle(QtCore.Qt.SolidPattern)
palette.setBrush(QtGui.QPalette.Inactive, QtGui.QPalette.PlaceholderText, brush)
brush = QtGui.QBrush(QtGui.QColor(0, 217, 159))
brush.setStyle(QtCore.Qt.SolidPattern)
palette.setBrush(QtGui.QPalette.Disabled, QtGui.QPalette.Button, brush)
brush = QtGui.QBrush(QtGui.QColor(120, 120, 120))
brush.setStyle(QtCore.Qt.SolidPattern)
palette.setBrush(QtGui.QPalette.Disabled, QtGui.QPalette.Text, brush)
brush = QtGui.QBrush(QtGui.QColor(120, 120, 120))
brush.setStyle(QtCore.Qt.SolidPattern)
palette.setBrush(QtGui.QPalette.Disabled, QtGui.QPalette.ButtonText, brush)
brush = QtGui.QBrush(QtGui.QColor(0, 0, 0, 128))
brush.setStyle(QtCore.Qt.SolidPattern)
palette.setBrush(QtGui.QPalette.Disabled, QtGui.QPalette.PlaceholderText, brush)
self.xzwd.setPalette(palette)
font = QtGui.QFont()
font.setFamily("微软雅黑")
font.setPointSize(14)
font.setBold(True)
font.setWeight(75)
self.xzwd.setFont(font)
self.xzwd.setAutoFillBackground(True)
self.xzwd.setAutoDefault(False)
self.xzwd.setDefault(False)
self.xzwd.setFlat(True)
self.xzwd.setObjectName("xzwd")
self.label_4 = QtWidgets.QLabel(self.frame_2)
self.label_4.setGeometry(QtCore.QRect(30, 70, 141, 21))
font = QtGui.QFont()
font.setFamily("微软雅黑")
self.label_4.setFont(font)
self.label_4.setObjectName("label_4")
self.textEdit = QtWidgets.QTextEdit(self.frame_2)
self.textEdit.setGeometry(QtCore.QRect(60, 110, 61, 41))
font = QtGui.QFont()
font.setFamily("微软雅黑")
font.setPointSize(12)
font.setBold(True)
font.setWeight(75)
self.textEdit.setFont(font)
self.textEdit.setObjectName("textEdit")
self.label_5 = QtWidgets.QLabel(self.frame_2)
self.label_5.setGeometry(QtCore.QRect(150, 120, 31, 21))
font = QtGui.QFont()
font.setFamily("微软雅黑")
self.label_5.setFont(font)
self.label_5.setObjectName("label_5")
self.textEdit_2 = QtWidgets.QTextEdit(self.frame_2)
self.textEdit_2.setGeometry(QtCore.QRect(200, 110, 61, 41))
font = QtGui.QFont()
font.setFamily("微软雅黑")
font.setPointSize(12)
font.setBold(True)
font.setWeight(75)
self.textEdit_2.setFont(font)
self.textEdit_2.setObjectName("textEdit_2")
self.label_7 = QtWidgets.QLabel(PdfZ)
self.label_7.setGeometry(QtCore.QRect(450, 250, 71, 21))
font = QtGui.QFont()
font.setFamily("微软雅黑")
self.label_7.setFont(font)
self.label_7.setObjectName("label_7")
self.label_6 = QtWidgets.QLabel(PdfZ)
self.label_6.setGeometry(QtCore.QRect(270, 290, 461, 511))
self.label_6.setFrameShape(QtWidgets.QFrame.Box)
self.label_6.setFrameShadow(QtWidgets.QFrame.Plain)
self.label_6.setLineWidth(1)
self.label_6.setMidLineWidth(0)
self.label_6.setText("")
self.label_6.setObjectName("label_6")
self.retranslateUi(PdfZ)
QtCore.QMetaObject.connectSlotsByName(PdfZ)
os.remove("return.png")
def retranslateUi(self, PdfZ):
_translate = QtCore.QCoreApplication.translate
PdfZ.setWindowTitle(_translate("PdfZ", "PDFZWORD"))
self.Reback.setText(_translate("PdfZ", "..."))
self.label.setText(_translate("PdfZ", "PDFZWORD"))
self.scwd.setText(_translate("PdfZ", "+ 上传文档"))
self.label_2.setText(_translate("PdfZ", "上传文档至此"))
self.label_3.setText(_translate("PdfZ", "操作"))
self.xzwd.setText(_translate("PdfZ", "开始转换"))
self.label_4.setText(_translate("PdfZ", "页码选择(请勿输0):"))
self.label_5.setText(_translate("PdfZ", "到"))
self.label_7.setText(_translate("PdfZ", "PDF预览"))
class pdwwindow(QtWidgets.QWidget,Ui_PdfZ):
def __init__(self):
super(pdwwindow, self).__init__()
self.setupUi(self)
def re_back(self):
self.close()
def sctp(self):
fileName, fileType = QtWidgets.QFileDialog.getOpenFileName(self, "选取文件", os.getcwd(),"自定义(*.pdf;*);;All Files(*)")
self.f = str(fileName)
self.p, self.s =self.f.split(".")
try:
if self.s == "pdf":
# 打开文件
doc = fitz.open(self.f)
# 读取一页 0代表第1页
page_one = doc.loadPage(0)
# 将第一页转换为Pixmap
page_pixmap = page_one.getPixmap()
# 将Pixmap转换为QImage
image_format = QImage.Format_RGBA8888 if page_pixmap.alpha else QImage.Format_RGB888
page_image = QImage(page_pixmap.samples, page_pixmap.width,page_pixmap.height, page_pixmap.stride, image_format)
# width = page_image.width()
# height = page_image.height()
# QImage 转为QPixmap
pix = QPixmap.fromImage(page_image)
# 设置图片大小自适应标签
self.label_6.setScaledContents(True)
# 给标签设置图像
self.label_6.setPixmap(pix)
else:
msg_box = QMessageBox(QMessageBox.Warning,"错误", "文件不是 pdf 文件,请重新选择!")
msg_box.exec_()
except Exception as e:
pass
def xzwj(self):
docx_file = "{}_pdfZword.docx".format(self.p)
str1 = self.textEdit.toPlainText()
num1 = int(str1)
str2 = self.textEdit_2.toPlainText()
num2 = int(str2)
if num1==num2:
num1=num1-1
cv = Converter(self.f)
cv.convert(docx_file, start=num1, end=num2)
cv.close()
root = tkinter.Tk()
root.withdraw()
tkinter.messagebox.showinfo("提示", "成功下载到源文件所在文件夹")
说明如下:
(1) def sctp(self): 其中的sctp为按钮的objectName属性名字;def xzwj(self):其中的xzwj为按钮的objectName属性名字;
(2) 可通过点击按钮实现本地文件上传;
fileName, fileType = QtWidgets. QFileDialog.getOpenFileName(self, "选取文件", os.getcwd(), "自定义(*.jpg;*.png;*.jpeg;*);;All Files(*)")
(3) 增加了防错功能,当上传的文档格式不是pdf时,将不执行程序,同时提示错误;
(4) 将pdf第一页转为图片,并用label组件显示;
(5) 在def xzwj(self):程序中可实现按页数提取word;
(6) 借助converter模块实现转化word。
if __name__ =="__main__":
import sys
app = QtWidgets.QApplication(sys.argv)
win = mywindow()
pw = pdwwindow()
win.show()
win.pdf_word.clicked.connect(win.pic_main)
win.pdf_word.clicked.connect(pw.show)
pw.Reback.clicked.connect(pw.re_back)
pw.Reback.clicked.connect(win.show)
pw.scwd.clicked.connect(pw.sctp)
pw.xzwd.clicked.connect(pw.xzwj)
sys.exit(app.exec_())
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:mmqy2019@163.com进行举报,并提供相关证据,查实之后,将立刻删除涉嫌侵权内容。
猜你喜欢
Rect是pygame中的一个创建矩形的对象,它包含一些属性主要是两块:坐标和长宽,Pygame 通过 Rect 对象存储和操作矩形区域,这篇文章主要介绍了pygame中Rect对象,需要的朋友可以参考下
#!/use/bin/envpython#-*-conding:utf-8-*-#author:shanshan"""写代码1,实现用户输入用户名和密码,当用户名为seven且密码为123时,显示登陆成功,否则登陆失败!2,实现用户输入用户名和密码,当用户名为seven且密码为123时,显示登陆成功,否则登陆失败,失败时允许重复输入三次3,实现用户输入用户名和密码,当用户
python下如何往数据库批量插入数据?方法是什么?假如我们想要往数据库表中的插入的数据有几百上千条,那么一条条插入,则调用sql语句查询插入就需要执行几百上千,这样花费的时间就非常的长。因此我们可以使用cursor.executemany(sql,args)来实现批量插入数据,那么具体怎样做呢?接着往下看。
用python处理中文,读取文件或消息时,如果发现乱码(字符串处理,读写文件,print),大多数人的做法是,调用encode decode进行调试,并没有
这篇文章主要给大家介绍了关于如何利用python实现你说我猜游戏的相关资料,用到的都是一些简单的基础的python语句,适合刚入门的小白,可以尝试跟着一起敲一下,感受一下编程中的乐趣,需要的朋友可以参考下
成为群英会员,开启智能安全云计算之旅
立即注册关注或联系群英网络
7x24小时售前:400-678-4567
7x24小时售后:0668-2555666
24小时QQ客服
群英微信公众号
CNNIC域名投诉举报处理平台
服务电话:010-58813000
服务邮箱:service@cnnic.cn
投诉与建议:0668-2555555
Copyright © QY Network Company Ltd. All Rights Reserved. 2003-2020 群英 版权所有
增值电信经营许可证 : B1.B2-20140078 粤ICP备09006778号 域名注册商资质 粤 D3.1-20240008