python脚本(Word转PDF格式小工具)

from PyQt5.QtWidgets import QApplication, QWidget, QVBoxLayout, QLabel, QMessageBox
from PyQt5.QtCore import Qt
import sys
import os
from comtypes import client


#文件转换脚本
class FileDropWidget(QWidget):
    def __init__(self):
        super().__init__()
        self.initUI()

    def initUI(self):
        layout = QVBoxLayout()
        # 设置窗口标题
        self.setWindowTitle("word/pdf")
        # 隐藏标题栏和控制按钮
        self.setWindowFlags(Qt.FramelessWindowHint)
        # 设置窗口置于顶层
        self.setWindowFlags(Qt.WindowStaysOnTopHint)
        # 获取屏幕的可用几何区域
        screen_geometry = QApplication.desktop().availableGeometry()
        # 设置窗口大小
        window_width = 400
        window_height = 300
        self.resize(window_width, window_height)
        # 将窗口移动到屏幕中心
        x = (screen_geometry.width() - window_width) // 2
        y = (screen_geometry.height() - window_height) // 2
        self.move(x, y)
        #拖拉区域代码
        label = QLabel("拖放Word文件到此区域")
        label.setAlignment(Qt.AlignCenter)
        label.setStyleSheet("""
            QLabel {
                background-color: #EAF2F8;
                font-family: Arial;
                font-size: 35px;
                font-weight: 40px;
                color: #333333;
                padding: 10px;
                border: 4px dashed #CCCCCC;
                border-radius: 30px;
            }
        """)

        label.setAcceptDrops(True)
        label.installEventFilter(self)

        layout.addWidget(label)
        self.setLayout(layout)


    def eventFilter(self, obj, event):
        if event.type() == event.DragEnter:
            if event.mimeData().hasUrls():
                event.acceptProposedAction()
        elif event.type() == event.Drop:
            if event.mimeData().hasUrls():
                files = [url.toLocalFile() for url in event.mimeData().urls()]
                self.handleDroppedFiles(files)
            event.acceptProposedAction()
        return super().eventFilter(obj, event)

    def handleDroppedFiles(self, files):
        for file in files:
            if file.endswith('.docx') or file.endswith('.doc'):
                self.convertToPDF(file)
            else:
                self.showErrorMessage("请拖放Word文件或类似文件!")

    def convertToPDF(self, docx_file):
        word = client.CreateObject("Word.Application")
        word.Visible = False
        doc = word.Documents.Open(docx_file)
        pdf_file = os.path.splitext(docx_file)[0] + ".pdf"
        doc.SaveAs(pdf_file, FileFormat=17)
        doc.Close()

        # 关闭 Word 窗口
        word.Quit()

        # 显示转换成功的消息框
        reply = QMessageBox.question(self, "转换成功", f"已将Word文件转换为PDF文件:\n{pdf_file}\n\n是否继续拖放Word文件",
                                     QMessageBox.Yes | QMessageBox.No)

        # 根据用户的选择执行相应的操作
        if reply == QMessageBox.Yes:
            # 用户选择继续执行代码
            print("继续执行代码...")
        elif reply == QMessageBox.No:
            # 用户选择关闭 Word/PDF 窗口
            os.startfile(pdf_file)  # 打开 PDF 文件

if __name__ == "__main__":
    app = QApplication(sys.argv)
    widget = FileDropWidget()
    widget.resize(300, 200)
    widget.show()
    sys.exit(app.exec_())

拖入word文件到规定区域,即可生成PDF格式文件
python脚本(Word转PDF格式小工具)_第1张图片

你可能感兴趣的:(Python笔记,python,word,pdf)