pdf文件转word文件,word转pdf文件小程序

在平时生活、学习中总会遇到一些文件格式的转化问题,在很多软件啊,网站都可以转换,但是都要付钱的;面对这个问题我也是经历过的,学习了python发现文件转换不就轻轻松松吗,接下来我带大家一起来学习如何进行文件的转化。

一、pdf文件转换为word 文件

需要导入的库:

from pdf2docx import Converter

如果没有就安装一些安装代码:

pip install pdf2docx

代码段很少:

pdf_file = '形势与政策.pdf'#需要转换的pdf文件的地址和名字
docx_file = '转换后.docx'#转换后的word文件的地址和名字
cov = Converter(pdf_file)#
cov.convert(docx_file, start=0, end=None)#
#start和end参数是值定转换页码的范围;默认是从第一页到最后一页;也可以通过pages指定不连续的页面比#如:pages=[2,4,6]
cov.close()

二、word转pdf文件

需要导入的库:

from win32com import client

这个库安装挺麻烦的,我当初找了很多方法,发现我的python3.8.6版本的直接用代码安装就可以:

pip install pypiwin32

文件转换代码如下:

from win32com import client
def Tdoc2pdf(doc_name, pdf_name):
    """
    :word文件转pdf
    :docx_name word文件名称
    :pdf_name 转换后pdf文件名称
    """
    word = client.DispatchEx("Word.Application")#打开word应用程序
    worddoc = word.Documents.Open(doc_name, ReadOnly=1)#打开word文件
    worddoc.SaveAs(pdf_name, FileFormat=17)#保存为pdf文件,其中FileFormat=17表示转换为pdf破地方文件FileFormat的参数有0-17,都代表不一样的文件
    worddoc.Close()#关闭原来的word文件
    return pdf_name   

Tdoc2pdf(r'E:/python/pythonProject/转换pdf为word/转换后.docx',r'E:/python/pythonProject/转换pdf为word/转换后.pdf')

接下来展示一下我写的文件转换小程序的代码:

# -*- coding: utf-8 -*-

# Form implementation generated from reading ui file 'untitled.ui'
#
# Created by: PyQt5 UI code generator 5.15.4
#
# 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.
import sys
import os

from PyQt5.QtGui import QFont
from pdf2docx import Converter
from win32com import client
from PyQt5 import QtCore, QtGui, QtWidgets
from PyQt5.QtWidgets import QFileDialog, QMessageBox


class Ui_MainWindow(object):
    def setupUi(self, MainWindow):
        MainWindow.setObjectName("MainWindow")
        MainWindow.setFixedSize(375, 530)
        MainWindow.setStyleSheet("background:rgb(230,230,241)")
        self.centralwidget = QtWidgets.QWidget(MainWindow)
        self.centralwidget.setObjectName("centralwidget")
        self.font = QFont()
        self.font.setFamily('华文楷体')
        self.font.setPointSizeF(10)
        self.Open_dir = QtWidgets.QPushButton(self.centralwidget)
        self.Open_dir.setGeometry(QtCore.QRect(140, 20, 93, 28))
        self.Open_dir.setObjectName("Open_dir")
        self.Open_dir.setFont(self.font)
        self.textEdit = QtWidgets.QTextEdit(self.centralwidget)
        self.textEdit.setGeometry(QtCore.QRect(80, 60, 201, 90))
        self.textEdit.setObjectName("textEdit")
        self.textEdit.setFont(self.font)
        self.textEdit.setReadOnly(True)
        self.label = QtWidgets.QLabel(self.centralwidget)
        self.label.setGeometry(QtCore.QRect(140, 310, 93, 28))
        self.label.setObjectName("label")
        self.label.setFont(self.font)
        self.label.setAlignment(QtCore.Qt.AlignHCenter | QtCore.Qt.AlignHCenter)
        self.label1 = QtWidgets.QLabel(self.centralwidget)
        self.label1.setGeometry(QtCore.QRect(140, 340, 93, 28))
        self.label1.setObjectName("label1")
        self.label1.setStyleSheet("background:rgb(0,245,225);")
        self.label1.setFont(self.font)
        self.label1.setAlignment(QtCore.Qt.AlignHCenter | QtCore.Qt.AlignHCenter)
        self.label2 = QtWidgets.QLabel(self.centralwidget)
        self.label2.setGeometry(QtCore.QRect(80, 150, 201, 100))
        self.label2.setObjectName("label2")
        self.label2.setText('温馨提示:一次只能传一个文件进行转换,保存的文件和原始文件在一个位置')
        self.label2.setWordWrap(True)  # 设置自动换行
        self.label2.setFont(self.font)
        self.label2.setStyleSheet("background:rgb(92,151,240);border-radius:10xp")
        self.textEdit_2 = QtWidgets.QTextEdit(self.centralwidget)
        self.textEdit_2.setGeometry(QtCore.QRect(80, 380, 201, 110))
        self.textEdit_2.setObjectName("textEdit_2")
        self.textEdit_2.setReadOnly(True)
        self.textEdit_2.setFont(self.font)
        self.Pdf_word = QtWidgets.QPushButton(self.centralwidget)
        self.Pdf_word.setGeometry(QtCore.QRect(60, 255, 100, 28))
        self.Pdf_word.setObjectName("Pdf_word")
        self.Pdf_word.setFont(self.font)
        self.Word_pdf = QtWidgets.QPushButton(self.centralwidget)
        self.Word_pdf.setGeometry(QtCore.QRect(200, 255, 100, 28))
        self.Word_pdf.setObjectName("Word_pdf")
        self.Word_pdf.setFont(self.font)
        MainWindow.setCentralWidget(self.centralwidget)
        self.statusBar = QtWidgets.QStatusBar(MainWindow)
        self.statusBar.setObjectName("statusBar")
        MainWindow.setStatusBar(self.statusBar)
        self.statusBar.showMessage('简约先森编写')
        self.Open_dir.clicked.connect(self.OpenDir)
        self.Word_pdf.clicked.connect(self.PdfConversion)
        self.Pdf_word.clicked.connect(self.DocxConversion)

        self.retranslateUi(MainWindow)
        QtCore.QMetaObject.connectSlotsByName(MainWindow)
    def OpenDir(self):
        global imgName
        self.textEdit.clear()
        self.textEdit_2.clear()
        imgName, imgType = QFileDialog.getOpenFileName(self.centralwidget, "打开文件","/","All Files(*);;*.pdf;;*.docx;;")#MultiSelect=True
        name=imgName.split('/')
        if name[-1] in 'doc'or'docx'or'pdf':
            self.textEdit.append(name[-1])
        else:
            self.Tips('只能传入word或者pdf文件')
    def PdfConversion(self):
        try:
            if imgName:
                self.label1.setText('请稍等.....')
                if imgName.split('.')[-1] in 'docx' or 'doc':
                    word = client.Dispatch("Word.Application")  # 打开word应用程序
                    # for file in files:
                    pdf_file = imgName.split('.')[0] + '_X' + '.pdf'
                    doc = word.Documents.Open(imgName)  # 打开word文件
                    doc.SaveAs(pdf_file, 17)  # 另存为后缀为".pdf"的文件,其中参数17表示为pdf
                    doc.Close()  # 关闭原来word文件
                    name = pdf_file.split('/')[-1]
                    self.textEdit_2.append(name)
                    self.label1.setText('转换成功')
                    word.Quit()
                else:
                    name = imgName.split('/')[-1]
                    self.Tips(f'{name}不是word文件,你应该是要转换为word文件')
            else:
                self.Tips('请传入需要转换的文件')
        except:
            self.Tips('请传入需要转换的文件')
    def Tips(self, message):
        QMessageBox.about(MainWindow, "提示", message)

    def DocxConversion(self):
        try:
            print(imgName)
            if imgName:
                self.label1.setText('请稍等.....')
                if imgName.split('.')[-1] in 'pdf':
                    cv = Converter(imgName)
                    docx_file = imgName.split('.')[0] + '_X' + '.docx'
                    cv.convert(docx_file, start=0, end=None)
                    cv.close()
                    name = docx_file.split('/')[-1]
                    self.textEdit_2.append(name)
                    self.label1.setText('转化成功')
                else:
                    name = imgName.split('/')[-1]
                    self.Tips(f'{name}不是pdf文件,你应该是要转化为pdf文件')
            else:
                self.Tips('请传入需要转换的文件')

        except:
            self.Tips('请传入需要转换的文件')

    def retranslateUi(self, MainWindow):
        _translate = QtCore.QCoreApplication.translate
        MainWindow.setWindowTitle(_translate("MainWindow", "pdf转换器"))
        self.Open_dir.setText(_translate("MainWindow", "打开文件"))
        self.label.setText(_translate("MainWindow", "转换结果"))
        self.Pdf_word.setText(_translate("MainWindow", "pdf转为word"))
        self.Word_pdf.setText(_translate("MainWindow", "word转为pdf"))
if __name__=='__main__':
    app=QtWidgets.QApplication(sys.argv)
    app.setStyle('Fusion')
    MainWindow = QtWidgets.QMainWindow()
    ui = Ui_MainWindow()
    ui.setupUi(MainWindow)
    MainWindow.show()
    sys.exit(app.exec_())

我是用pyqt5编写的界面不是很好看,但是功能使用就行,喜欢的可以复制代码调试一下,打包后就可以直接发给朋友使用了,下面就是界面,我没进行美化,可以使用QSS进行界面美化

 文件命名不能和同一个文件夹的文件相同,相同的话会覆盖原来的文件,喜欢的可以点个关注

  • 1
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值