Python脚本自动化实现Word转PDF全攻略(建议收藏)

Written by

in

文章目录
  • 作为HR,我曾经每周都要处理几十份员工培训材料的格式转换工作。领导要求所有培训文档必须统一转换为PDF格式,方便存档和线上分享。最开始,我只能一份份手动在Word里另存为PDF,每次转换都要盯着进度条发呆,生怕出错。 直到有一天,我发现了Python的这个自动化脚本。现在,同样的工作量,我只需要运行一个脚本,喝杯咖啡的功夫就全部搞定。更重要的是,这个脚本还能处理批量转换,再也不用担心月底绩效考核时文档堆积如山了。 今天我要分享的这个Python脚本,不仅能帮你自动化Word转PDF,还能扩展到各种文档处理场景。无论你是HR、行政还是文案工作者,这个技能都能让你效率翻倍!
  • 让我们先来看看这个神奇的脚本是如何工作的: import comtypes.client wdFormatPDF = 17 def doc_to_pdf(input_file_path, output_file_path): word = comtypes.client.CreateObject(‘Word.Application’) doc = word.Documents.Open(input_file_path) doc.SaveAs(output_file_path, FileFormat=wdFormatPDF) doc.Close() word.Quit()
  • 作为HR,我曾用这个脚本解决了一个棘手问题:公司年度培训结束后,需要将所有培训材料转换为PDF并分发给各部门。传统方式需要手动逐个转换再发送邮件,至少需要两天时间。 我修改了脚本,添加了批量处理和自动发送功能: import os import smtplib from email.mime.multipart import MIMEMultipart from email.mime.base import MIMEBase from email import encoders def batch_convert_and_email(input_folder, department_emails): “”” 批量转换Word文档为PDF并通过邮件发送给指定部门 参数: input_folder (str): 包含Word文档的文件夹路径 department_emails (dict): 部门名称到邮箱列表的映射 “”” # 确保输出文件夹存在 output_folder = ‘output_pdfs’ if not os.path.exists(output_folder): os.makedirs(output_folder) # 遍历输入文件夹中的所有文件 for filename in os.listdir(input_folder): if filename.endswith(‘.docx’) or filename.endswith(‘.doc’): input_path = os.path.join(input_folder, filename) # 从文件名中提取部门信息(假设格式为”部门_培训材料.docx”) try: department = filename.split(‘_’)[0] if department in department_emails: output_path = os.path.join(output_folder, os.path.splitext(filename)[0] + ‘.pdf’) # 转换文档 doc_to_pdf(input_path, output_path) # 发送给相关部门 for email in department_emails[department]: send_pdf_via_email(output_path, email) except Exception as e: print(f”处理 {filename} 时出错: {str(e)}”) # 部门邮箱映射 departments = { ‘HR’: [‘hr@company.com’, ‘manager_hr@company.com’], ‘IT’: [‘it_team@company.com’], ‘Finance’: [‘finance@company.com’] } # 执行批量转换和发送 batch_convert_and_email(‘training_materials’, departments) 这个改进版本让我在1小时内完成了原本需要2天的工作量,而且确保了每位员工都能及时收到自己部门的培训材料。
  • 今天分享的这个Word转PDF脚本虽然简单,却蕴含着深刻的职场智慧。它教会我们如何用技术手段解决重复性问题,如何将HR的专业思维转化为技术方案。 到此这篇关于Python脚本自动化实现Word转PDF全攻略(建议收藏)的文章就介绍到这了,更多相关Python Word转PDF内容请搜索风君子博客以前的文章或继续浏览下面的相关文章希望大家以后多多支持风君子博客! 您可能感兴趣的文章: Python实现Word批量转PDF的小工具 Python中PDF转Word的多种实现方法 Python将Word文档转为PDF的两种方法 Python将Office文档(Word、Excel、PDF、PPT)转为OFD格式的实现方法 Python实现PDF到Word文档的高效转换 Python实现PDF转Word的多种方式总结 Python批量实现Word/EXCEL/PPT转PDF
  • 目录
    • 场景故事
    • 核心代码解析
      • 代码中文注释版
      • 代码价值分析
    • 关键技术解剖台
      • COM对象编程的职场类比
      • HR眼中的技术价值
      • 技术三棱镜
      • 复杂度可视化
    • 扩展应用场景
      • 场景迁移实验室
    • 实战案例分享
      • 常见问题解决方案
        • 1. 如何处理没有安装Word的电脑
        • 2. 如何提高转换成功率
      • 总结

        作为HR,我曾经每周都要处理几十份员工培训材料的格式转换工作。领导要求所有培训文档必须统一转换为PDF格式,方便存档和线上分享。最开始,我只能一份份手动在Word里另存为PDF,每次转换都要盯着进度条发呆,生怕出错。

        直到有一天,我发现了Python的这个自动化脚本。现在,同样的工作量,我只需要运行一个脚本,喝杯咖啡的功夫就全部搞定。更重要的是,这个脚本还能处理批量转换,再也不用担心月底绩效考核时文档堆积如山了。

        今天我要分享的这个Python脚本,不仅能帮你自动化Word转PDF,还能扩展到各种文档处理场景。无论你是HR、行政还是文案工作者,这个技能都能让你效率翻倍!

        让我们先来看看这个神奇的脚本是如何工作的:

        import comtypes.client
        wdFormatPDF = 17
        
        def doc_to_pdf(input_file_path, output_file_path):
            word = comtypes.client.CreateObject('Word.Application')
            doc = word.Documents.Open(input_file_path)
            doc.SaveAs(output_file_path, FileFormat=wdFormatPDF)
            doc.Close()
            word.Quit()
        

        # 导入COM对象客户端库,用于控制Windows应用程序
        import comtypes.client
        
        # 定义Word中PDF格式的常量值
        wdFormatPDF = 17
        
        def doc_to_pdf(input_file_path, output_file_path):
            """
            将Word文档转换为PDF格式
            
            参数:
                input_file_path (str): 输入的Word文档路径
                output_file_path (str): 输出的PDF文件路径
            """
            # 创建Word应用程序的COM对象
            word = comtypes.client.CreateObject('Word.Application')
            
            try:
                # 打开指定的Word文档
                doc = word.Documents.Open(input_file_path)
                
                # 将文档另存为PDF格式
                # wdFormatPDF=17 是Word中PDF格式的标识符
                doc.SaveAs(output_file_path, FileFormat=wdFormatPDF)
                
                # 关闭文档
                doc.Close()
            finally:
                # 无论转换是否成功,都要退出Word应用程序
                word.Quit()
        

        三维价值评估

        • 时间收益:单次转换时间从2分钟→5秒 → 年省约80小时
        • 误差消除:避免手动操作导致的格式错乱或遗漏
        • 扩展潜力:改造为批量转换工具仅需增加循环逻辑

        HR专业视角

        "这个脚本本质上是’流程标准化’的技术实现,就像我们制定招聘流程一样:

        • Word文档 → 待处理候选人
        • PDF转换 → 面试筛选
        • 输出PDF → 发放offer"

        对应人力资源管理中的标准化操作流程(SOP),解决人为操作误差痛点。就像我们制定招聘流程一样,这个脚本将复杂的Word转PDF操作固化为一套标准程序。

        • 原理类比:COM对象 ≈ 组织架构中的标准化接口
        • 参数黑盒:wdFormatPDF=17 相当于HR系统中的"流程节点标识"
        • 避坑指南:未处理异常退出 ≈ 未完成背景调查就发offer

        pie 
            title 资源消耗分布
            "CPU占用" : 15
            "内存消耗" : 25
            "COM对象通信" : 60

        案例1:Word转PDF→批量文档处理改造指南

        import os
        
        def batch_convert(input_folder, output_folder):
            """
            批量转换Word文档为PDF
            
            参数:
                input_folder (str): 包含Word文档的文件夹路径
                output_folder (str): 输出PDF的文件夹路径
            """
            # 确保输出文件夹存在
            if not os.path.exists(output_folder):
                os.makedirs(output_folder)
            
            # 遍历输入文件夹中的所有文件
            for filename in os.listdir(input_folder):
                if filename.endswith('.docx') or filename.endswith('.doc'):
                    input_path = os.path.join(input_folder, filename)
                    output_path = os.path.join(output_folder, 
                                              os.path.splitext(filename)[0] + '.pdf')
                    try:
                        doc_to_pdf(input_path, output_path)
                        print(f"成功转换: {filename}")
                    except Exception as e:
                        print(f"转换失败 {filename}: {str(e)}")
        
        # 使用示例
        batch_convert('input_docs', 'output_pdfs')
        

        改造收益:处理上百份文档只需几分钟

        案例2:Word转PDF+邮件发送跨界融合

        import smtplib
        from email.mime.multipart import MIMEMultipart
        from email.mime.base import MIMEBase
        from email import encoders
        
        def send_pdf_via_email(pdf_path, recipient):
            """
            发送PDF文件作为邮件附件
            
            参数:
                pdf_path (str): PDF文件路径
                recipient (str): 收件人邮箱
            """
            # 创建邮件对象
            msg = MIMEMultipart()
            msg['From'] = 'your_email@example.com'
            msg['To'] = recipient
            msg['Subject'] = '培训材料 - 请查收'
            
            # 添加PDF附件
            with open(pdf_path, 'rb') as f:
                part = MIMEBase('application', 'octet-stream')
                part.set_payload(f.read())
                encoders.encode_base64(part)
                part.add_header('Content-Disposition', 
                               f'attachment; filename={os.path.basename(pdf_path)}')
                msg.attach(part)
            
            # 连接SMTP服务器并发送
            with smtplib.SMTP('smtp.example.com') as server:
                server.login('username', 'password')
                server.send_message(msg)
        
        # 结合转换和发送
        def convert_and_send(input_doc, recipient):
            output_pdf = os.path.splitext(input_doc)[0] + '.pdf'
            doc_to_pdf(input_doc, output_pdf)
            send_pdf_via_email(output_pdf, recipient)
        

        创新价值:创建自动化文档分发系统

        作为HR,我曾用这个脚本解决了一个棘手问题:公司年度培训结束后,需要将所有培训材料转换为PDF并分发给各部门。传统方式需要手动逐个转换再发送邮件,至少需要两天时间。

        我修改了脚本,添加了批量处理和自动发送功能:

        import os
        import smtplib
        from email.mime.multipart import MIMEMultipart
        from email.mime.base import MIMEBase
        from email import encoders
        
        def batch_convert_and_email(input_folder, department_emails):
            """
            批量转换Word文档为PDF并通过邮件发送给指定部门
            
            参数:
                input_folder (str): 包含Word文档的文件夹路径
                department_emails (dict): 部门名称到邮箱列表的映射
            """
            # 确保输出文件夹存在
            output_folder = 'output_pdfs'
            if not os.path.exists(output_folder):
                os.makedirs(output_folder)
            
            # 遍历输入文件夹中的所有文件
            for filename in os.listdir(input_folder):
                if filename.endswith('.docx') or filename.endswith('.doc'):
                    input_path = os.path.join(input_folder, filename)
                    
                    # 从文件名中提取部门信息(假设格式为"部门_培训材料.docx")
                    try:
                        department = filename.split('_')[0]
                        if department in department_emails:
                            output_path = os.path.join(output_folder, 
                                                      os.path.splitext(filename)[0] + '.pdf')
                            
                            # 转换文档
                            doc_to_pdf(input_path, output_path)
                            
                            # 发送给相关部门
                            for email in department_emails[department]:
                                send_pdf_via_email(output_path, email)
                    except Exception as e:
                        print(f"处理 {filename} 时出错: {str(e)}")
        
        # 部门邮箱映射
        departments = {
            'HR': ['hr@company.com', 'manager_hr@company.com'],
            'IT': ['it_team@company.com'],
            'Finance': ['finance@company.com']
        }
        
        # 执行批量转换和发送
        batch_convert_and_email('training_materials', departments)
        

        这个改进版本让我在1小时内完成了原本需要2天的工作量,而且确保了每位员工都能及时收到自己部门的培训材料。

        如果目标电脑没有安装Microsoft Word,可以考虑以下替代方案:

        • 使用LibreOffice的Python接口(需要安装LibreOffice)
        • 使用Aspose.Words(付费库,但功能强大)
        • 使用在线转换API(如CloudConvert)

        添加错误处理和日志记录功能:

        import logging
        
        logging.basicConfig(filename='conversion.log', level=logging.INFO)
        
        def doc_to_pdf_robust(input_file_path, output_file_path):
            try:
                word = comtypes.client.CreateObject('Word.Application')
                word.Visible = False  # 后台运行
                doc = word.Documents.Open(input_file_path)
                doc.SaveAs(output_file_path, FileFormat=wdFormatPDF)
                doc.Close()
                word.Quit()
                logging.info(f"成功转换: {input_file_path} -> {output_file_path}")
            except Exception as e:
                logging.error(f"转换失败 {input_file_path}: {str(e)}")
                raise
        

        今天分享的这个Word转PDF脚本虽然简单,却蕴含着深刻的职场智慧。它教会我们如何用技术手段解决重复性问题,如何将HR的专业思维转化为技术方案。

        到此这篇关于Python脚本自动化实现Word转PDF全攻略(建议收藏)的文章就介绍到这了,更多相关Python Word转PDF内容请搜索风君子博客以前的文章或继续浏览下面的相关文章希望大家以后多多支持风君子博客!

        您可能感兴趣的文章:

        • Python实现Word批量转PDF的小工具
        • Python中PDF转Word的多种实现方法
        • Python将Word文档转为PDF的两种方法
        • Python将Office文档(Word、Excel、PDF、PPT)转为OFD格式的实现方法
        • Python实现PDF到Word文档的高效转换
        • Python实现PDF转Word的多种方式总结
        • Python批量实现Word/EXCEL/PPT转PDF

        站内搜索