Python批量Word转PDF神器,让你从此轻松转换文档!

大家好!今天我们来聊聊工作中可能遇到的一个“头大”问题:如何批量将Word文档转成PDF?是不是光听听都感觉头皮发麻?

不用担心,今天我们就来分享一个Python小技巧,让你在批量转换文档时再也不用抓狂!

为什么需要批量Word转PDF?

想象一下,你是公司的行政小能手,每天面对成堆的合同、报告需要转换格式,手动操作简直不敢想象的累。关键是,老板还老催!Python作为技术潮人必备的技能之一,这时候就派上用场了!

工具准备

我们需要python-docx来处理Word文件内容,comtypes库用来调用Windows的脚本接口实现Word转PDF操作。这两位神器助攻绝对让你事半功倍!

首先,安装这两个库:

pip install python-docx comtypes

开工大吉

准备好了吗?让我们划开Python的面板,用代码解决这个烦人的问题吧!

import os
import comtypes.clientdef docx_to_pdf(docx_path, pdf_path):word = comtypes.client.CreateObject('Word.Application')doc = word.Documents.Open(docx_path)doc.SaveAs(pdf_path, FileFormat=17)  # 17 is the format type for PDFsdoc.Close()word.Quit()def batch_convert_docx_to_pdf(input_folder, output_folder):if not os.path.exists(output_folder):os.makedirs(output_folder)for filename in os.listdir(input_folder):if filename.endswith(".docx"):docx_path = os.path.join(input_folder, filename)pdf_filename = f"{os.path.splitext(filename)[0]}.pdf"pdf_path = os.path.join(output_folder, pdf_filename)docx_to_pdf(docx_path, pdf_path)print(f"Converted {filename} to PDF.")# 运行批量转换
batch_convert_docx_to_pdf("C:/Users/olive/Desktop/待转换的Word","C:/Users/olive/Desktop/转换后的PDF")

代码解读

1、转换函数docx_to_pdf

这个小函数负责干实事儿,把一个Word文件转成PDF。FileFormat=17是指定保存为PDF格式的魔法数字。

2、批量转换函数 batch_convert_docx_to_pdf

这个函数会扫描指定的输入文件夹,找到所有的 .docx 文件,逐个调用 docx_to_pdf 函数批量转成PDF并输出到指定文件夹。

如果还有不明白的地方,可以细读一下下面的详细解析:

1、首先,导入了必要的库:
  - os:用于文件路径操作和文件夹操作。
  - comtypes.client:用于与COM(Component Object Model)组件进行通信的客户端模块,这里用于操作Microsoft Word应用程序。

2、定义了函数docx_to_pdf:
  - 该函数使用comtypes库创建了一个Word应用程序对象(word)。
  - 打开并操作对应路径的Word文档,将其另存为PDF格式文件。
  - 最后关闭Word文档和退出Word应用程序。

3、定义了函数batch_convert_docx_to_pdf:
  - 该函数接受两个参数:输入文件夹路径(input_folder)和输出文件夹路径(output_folder)。
  - 如果输出文件夹不存在,则创建输出文件夹。
  - 遍历输入文件夹中的所有文件,对扩展名为".docx"的文件执行转换操作,调用docx_to_pdf函数将Word文档转换为PDF格式。

4.调用batch_convert_docx_to_pdf函数,传入待转换的Word文档所在的文件夹路径和转换后的PDF文件存放的文件夹路径。

激动人心的测试

我i们先准备几个Word文档,就用上次生成的合同文档吧:

接着,要修改一下测试代码,记得改成你自己的文件路径:

# 运行批量转换
batch_convert_docx_to_pdf("C:/Users/olive/Desktop/待转换的Word","C:/Users/olive/Desktop/转换后的PDF")

最后,运行一下我们的代码,检验一下我们的成果吧:

在【转换后的PDF】目录下,成功生成了3个PDF文档:

我们随便打开一个PDF文档,看一下效果:

效果非常棒!!

大功告成

怎么样?是不是感觉超级简单?只要执行一次后,你就可以坐在办公桌前翘脚喝咖啡,看着代码帮你忙得不亦乐乎!在这个快节奏的时代,掌握一些小技能真的能帮我们省去不少时间。希望今天的分享能帮助到你,批量转换Word文档再也不是难题。

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

如若内容造成侵权/违法违规/事实不符,请联系瞎胡闹网进行投诉反馈,一经查实,立即删除!

相关文章

实验06 持续集成测试

知识点 集成测试定义 集成测试是将多个单元组合起来形成更大的单元,并测试它们是否能协同工作形成子系统。一种旨在暴露单元接口之间、组件/系统间交互或协同工作时所存在的缺陷的测试。 集成测试关注的问题 模块间数据传递是否正确。一个模块的功能是否影响另一…

python如何调用matlab python package库matlab转python安装包调用使用简单示例

说明(废话) 之前没有进行python调用过matlab,前面用matlab engine for python可以通过调用matlab的源码文件的形式可以调用工程,但是这又有一个问题,就是在运行的时候必须提供python和matlab的全部源码 该文章是通过matlab源码转python pack…

uniapp form表单校验

公司的一个老项目,又要重新上架,uniapp一套代码,打包生成iOS端发布到App Store,安卓端发布到腾讯应用宝、OPPO、小米、华为、vivo,安卓各大应用市场上架要求不一样,可真麻烦啊 光一个表单校验,…

C++编程逻辑讲解step by step:使用对话框与控件(1)

对话框是实现人机交互的重要工具,Visual C的对话框类似于VB或Delphi的form,对话框和各种控件的结合使用,可以建立形形色色的功能十分强大的应用程序窗口界面,这就是所谓的对话框编程技术。 应用程序中需要各种各样的对话框&am…

易保全参与起草的两项区块链全国团体标准正式发布

在数字化转型浪潮席卷全球的今天,区块链技术以其去中心化、透明性、不可篡改等独特优势,正逐步成为重塑各行各业信任机制与业务流程的关键力量。 近日,中国通信工业协会正式发布了《区块链服务 基于区块链的去中心化标识符技术要求》与《区块…

IIS安装配置教程图文教程(超详细)

「作者简介」:冬奥会网络安全中国代表队,CSDN Top100,就职奇安信多年,以实战工作为基础对安全知识体系进行总结与归纳,著作适用于快速入门的 《网络安全自学教程》,内容涵盖系统安全、信息收集等12个知识域…

2024年中职大数据实验室建设及大数据实训平台整体解决方案

随着大数据时代的到来,中等职业学校(中职)的大数据实验室建设和实训平台打造成为了培养新一代信息技术人才的重要环节。本方案旨在为2024年中职大数据实验室建设提供一套全面、可行的整体解决方案,旨在培养学生的大数据分析能力、…

Postfix+Dovecot+Roundcube开源邮件系统搭建系列5:Roundcube安装配置(含Nginx+PHP部署配置)

1. PHP安装配置 参考wordpress 6.5.2版本安装记录 中关于PHP安装方法,此处不再详述。 修改php-fpm的启动用户和组为vmail,这一步是和nginx配置相呼应。配置文件/etc/opt/remi/php83/php-fpm.d/www.conf 下面几个配置: user vmail group vm…

【电路笔记】-放大器的输入和输出阻抗

放大器的输入和输出阻抗 文章目录 放大器的输入和输出阻抗1、概述2、输入和输出阻抗的定义3、阻抗的重要性4、阻抗设置5、设置方法6、总结1、概述 从非常简单的角度来看,放大器由一个“盒子”组成,实现输入信号和输出信号之间的放大功能。 输入进入系统和输出离开系统的方式…

数电基础 - 555定时器

目录 一. 简介 二. 工作原理 三. 应用场景 四. 结成施密特触发器 五. 结成单稳态触发器 六. 结成多携振荡器 七. 优缺点 一. 简介 555 定时器是一种集成电路芯片,在电子电路中应用广泛。 它包含两个比较器、一个基本 RS 触发器、一个放电三极管以及分压器等…

Leetcode二分搜索法浅析

文章目录 1.二分搜索法1.1什么是二分搜索法?1.2解法思路 1.二分搜索法 题目原文: 给定一个 n 个元素有序的(升序)整型数组 nums 和一个目标值 target ,写一个函数搜索 nums 中的 target,如果目标值存在返…

【BUG】已解决:raise KeyError(key) from err KeyError: (‘name‘, ‘age‘)

已解决:raise KeyError(key) from err KeyError: (‘name‘, ‘age‘) 欢迎来到英杰社区https://bbs.csdn.net/topics/617804998 欢迎来到我的主页,我是博主英杰,211科班出身,就职于医疗科技公司,热衷分享知识&#xf…

“社群+”生态下的开源AI智能名片源码:驱动商业与社会连接的新引擎

摘要:在“社群”生态日益成为主流趋势的今天,开源AI智能名片源码作为技术创新与社群运营的深度融合体,正逐步展现出其重塑商业格局、深化社会连接的巨大潜力。本文旨在深入探讨开源AI智能名片源码的技术特性、在“社群”生态中的具体应用、对…

VisualRules-Web案例展示(一)

VisualRules单机版以其卓越的功能深受用户喜爱。现在,我们进一步推出了VisualRules-Web在线版本,让您无需安装任何软件,即可在任何浏览器中轻松体验VisualRules的强大功能。无论是数据分析、规则管理还是自动化决策,VisualRules-W…

【D3.js in Action 3 精译_016】第二章 DOM 的操作方法

当前内容所在位置 第一部分 D3.js 基础知识 第一章 D3.js 简介(已完结) 1.1 何为 D3.js?1.2 D3 生态系统——入门须知1.3 数据可视化最佳实践(上)1.3 数据可视化最佳实践(下)1.4 本章小结 第二章…

数据结构(Java):优先级队列(堆)堆的模拟实现

目录 1、优先级队列 1.1 概念 1.2 PriorityQueue底层结构 2、 堆 2.1 堆的概念 2.2 堆的存储结构 3、优先级队列(堆)的模拟实现 3.1 堆的创建 3.1.1 向下调整算法建完整堆 3.2 堆的插入 3.2.1 向上调整算法 3.3 堆的删除 3.4 堆排序 1、优先…

51单片机嵌入式开发:12、STC89C52RC 红外解码数码管显示

STC89C52RC 红外解码数码管显示 1 概述2 HX1838原理2.1 原理概述2.2 原理概述 3 HX1838代码实现3.1 工程整理3.2 工程代码3.3 演示 4 HX1838总结 1 概述 HX1838是一种常见的红外接收模块,用于接收和解码红外遥控器发送的红外信号。 HX1838具有以下特点和功能&#…

二、BIO、NIO、直接内存与零拷贝

一、网络通信编程基础 1、Socket Socket是应用层与TCP/IP协议族通信的中间软件抽象层,是一组接口,由操作系统提供; Socket将复杂的TCP/IP协议处理和通信缓存管理都隐藏在接口后面,对用户来说就是使用简单的接口进行网络应用编程…

HarmonyOS根据官网写案列~ArkTs从简单地页面开始

Entry Component struct Index {State message: string 快速入门;build() {Column() {Text(this.message).fontSize(24).fontWeight(700).width(100%).textAlign(TextAlign.Start).padding({ left: 16 }).fontFamily(HarmonyHeiTi-Bold).lineHeight(33)Scroll() {Column() {Ba…

使用Docker 实现 MySQL 循环复制(三)

系列文章 使用Docker 实现 MySQL 循环复制(一) 使用Docker 实现 MySQL 循环复制(二) 目录 系列文章1. 在主机上安装MySQL客户端2. 配置循环复制拓扑2.1 进入容器2.2 创建复制用户并授予复制权限2.3 复位二进制日志2.4 配置环形复…