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 = 400window_height = 300self.resize(window_width, window_height)# 将窗口移动到屏幕中心x = (screen_geometry.width() - window_width) // 2y = (screen_geometry.height() - window_height) // 2self.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 = Falsedoc = 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格式文件
在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/21617.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

应用于智能眼镜上实现检测功能的距离传感芯片

随着智能穿戴设备的发展,各种新型的电子产品不断被研发出来,诸如智能头盔、智能手表、智能手环等等,智能眼镜就是其中一种,国内华为、小米相继推出智能产品。 智能眼镜具有和智能耳机相似的功能,不仅保留眼镜本身功能…

十七、web网页像素知识

目录: 像素视口 一、像素 像素:- 屏幕是由一个个发光的小点构成,这一个个的小点就是像素- 分辨率:1920 x 1080 说的就是屏幕中小点的数量- 在前端开发中像素要分成两种情况讨论:css像素和物理像素- 物理像素&#xff…

雪花算法 — 集群高并发情况下如何保证分布式唯一全局ID生成?

雪花算法 问题 为什么需要分布式全局唯一ID以及分布式ID的业务需求 在复杂分布式系统中,往往需要对大量的数据和消息进行唯一标识: 如在美团点评的金融、支付、餐饮、酒店猫眼电影等产品的系统中数据逐渐增长,对数据库分库分表后需要有一…

图像分割的简史:从CNN到掩模R-CNN

一、说明 在 Athelas,我们使用卷积神经网络 (CNN) 不仅仅是分类!在这篇文章中,我们将看到如何在图像实例分割中使用CNN,并取得很好的效果。 自从 Alex Krizhevsky、Geoff Hinton 和 Ilya Sutskever 在 2012…

Linux基础服务10——虚拟化kvm

文章目录 一、基本了解二、安装kvm2.1 部署准备2.2 安装基础服务2.3 安装web管理服务 三、web界面管理3.1 添加kvm主机3.2 存储管理3.2.1 上传镜像3.2.2 扩容存储池 3.3 网络管理3.4 创建虚拟机3.5 报错处理3.5.1 Server disconnected3.5.1 文件句柄问题 一、基本了解 什么是虚…

常用分类损失CE Loss、Focal Loss及GHMC Loss理解与总结

一、CE Loss 定义 交叉熵损失(Cross-Entropy Loss,CE Loss)能够衡量同一个随机变量中的两个不同概率分布的差异程度,当两个概率分布越接近时,交叉熵损失越小,表示模型预测结果越准确。 公式 二分类 二…

安装orcle报错:指定的 Oracle 系统标识符 (SID) 已在使用

安装orcle报错:[INS-35075]指定的 Oracle 系统标识符 (SID) 已在使用 说明前面的orcle没有彻底删除 解决这个问题: 搜索框 —— > 输入:regedit ——> 回车 运行regedit,选择HKEY_LOCAL_MACHINE SOFTWARE ORACLE&#xff…

数字图像处理【11】OpenCV-Canny边缘提取到FindContours轮廓发现

本章主要介绍图像处理中一个比较基础的操作:Canny边缘发现、轮廓发现 和 绘制轮廓。概念不难,主要是结合OpenCV 4.5的API相关操作,为往下 "基于距离变换的分水岭图像分割" 做知识储备。 Canny边缘检测 在讲述轮廓之前,…

【Hippo4j源码的方式安装部署教程】

🚀 线程池管理工具-Hippo4j 🚀 🌲 AI工具、AI绘图、AI专栏 🍀 🌲 如果你想学到最前沿、最火爆的技术,赶快加入吧✨ 🌲 作者简介:硕风和炜,CSDN-Java领域优质创作者&#…

Object.fromEntries()将键值对列表转换为一个对象

Object.fromEntries() 静态方法将键值对列表转换为一个对象 将 Array 转换成对象: let arr [["name","张三"],["age","40"]] let obj Object.fromEntries(arr); console.log(obj);将 Map 转换成对象: let …

Spring 项目创建和使用2 (Bean对象的存取)

目录 一、创建 Bean 对象 二、将Bean对象存储到 Spring容器中 三、创建 Spring 上下文(得到一个Spring容器) 1. 通过在启动类中 ApplicationContext 获取一个 Spring容器 2. 通过在启动类种使用 BeanFactory 的方式来得到 Spring 对象 (此…

C# Linq 详解一

目录 一、概述 二、Where 三、Select 四、GroupBy 五、First / FirstOrDefault 六、Last / LastOrDefault C# Linq 详解一 1.Where 2.Select 3.GroupBy 4.First / FirstOrDefault 5.Last / LastOrDefault C# Linq 详解二 1.OrderBy 2.OrderByDescending 3.Skip 4.Take …