使用python将word文档和pdf电子书进行格式互转(兼容Windows/Linux)

简介: 一些重要文档格式之间的互转在目前显得尤为重要,pdf作为通用格式在现在各个平台上兼容性是最好的,所以写python脚本将这些word文档批量转换pdf是最好的解决方案。由于windows系统对于word文档有天然的兼容性优势,所以转换起来很简单,普遍上是通过comtypes模块。

一些重要文档格式之间的互转在目前显得尤为重要,pdf作为通用格式在现在各个平台上兼容性是最好的,所以写python脚本将这些word文档批量转换pdf是最好的解决方案。

由于windows系统对于word文档有天然的兼容性优势,所以转换起来很简单,普遍上是通过comtypes模块。

pip3 install comtypes
from comtypes.client import CreateObject
import os

def wd_to_pdf(folder):
        #获取指定目录下面的所有文件
        files = os.listdir(folder)
        #获取word类型的文件放到一个列表里面
        wdfiles = [f for f in files if f.endswith((".doc", ".docx"))]
        for wdfile in wdfiles:
            #将word文件放到指定的路径下面
            wdPath = os.path.join(folder, wdfile)
            #设置将要存放pdf文件的路径
            pdfPath = wdPath
            #判断是否已经存在对应的pdf文件,如果不存在就加入到存放pdf的路径内
            if pdfPath[-3:] != 'pdf':
                pdfPath = pdfPath + ".pdf"
            #将word文档转化为pdf文件,先打开word所在路径文件,然后在处理后保存pdf文件,最后关闭
            pdfCreate = self.wdToPDF.Documents.Open(wdPath)
            pdfCreate.SaveAs(pdfPath, self.wdFormatPDF)

其实难点还是在Linux系统下如何转换,因为comtypes依赖的win32com模块在linux下是无法使用的,所以在linux下面推荐另外一套解决方案也就是LibreOffice,LibreOffice 能够与 Microsoft Office 系列以及其它开源办公软件深度兼容,且支持的文档格式相当全面。

首先卸载当前系统的libreoffice,因为大多数系统默认安装的都是低版本,我们要使用的是最新稳定版

yum remove libreoffice-*

https://www.libreoffice.org/download/download/上下载最新的稳定版gz压缩包

安装java依赖

yum -y install java-1.8.0-openjdk*

然后将刚才下载的gz压缩包解压后安装

tar xvf LibreOffice_6.2.5.2_Linux_x86-64_rpm.tar.gz
 
cd LibreOffice_6.2.5.2_Linux_x86-64_rpm/RPMS/
 
yum localinstall *.rpm

最后安装一些依赖

yum install cairo cups-libs libSM
yum install ibus
yum install libreoffice-headless

在命令行输入

libreoffice -help

会显示帮助文档就没问题了

解决中文乱码问题

安装windows字体(不装,会有乱码)将windows的字体复制到linux上C:WindowsFonts* windows上所有的字体(尝试过只复制部分,还是有乱码,全部字体就不会乱码了),上传到linux的/usr/share/fonts/chinese('chinese'目录是我自己建的,mkdir chinese)

chmod -R 755 /usr/share/fonts/chinese    // 修改权限

fc-cache -fv        // 建立字体缓存

fc-list | grep chinese        // 可以查看到已安装新增的字体了

如果你嫌麻烦,也可以修改系统语言来支持中文

执行命令:

yum groupinstall "fonts"

安装成功后,

打开

vim /etc/locale.conf

按键 i 进入编辑模式, 把内容改为

LANG="zh_CN.UTF-8"

wq 存盘

然后重启服务器reboot

之后也可以支持中文转换了

转换命令

libreoffice6.2 --headless --convert-to pdf /root/4321.docx

此时,我们要改造一下转换脚本,做到可以兼容windows和Linx双系统,任意系统下都可以调用脚本进行转换

import subprocess
import os
try:
    from comtypes import client
except ImportError:
    client = None

def doc2pdf(doc):
    """
    convert a doc/docx document to pdf format
    :param doc: path to document
    """
    doc = os.path.abspath(doc) # bugfix - searching files in windows/system32
    if client is None:
        return doc2pdf_linux(doc)
    name, ext = os.path.splitext(doc)
    try:
        word = client.DispatchEx("Word.Application")
        worddoc = word.Documents.Open(doc)
        worddoc.SaveAs(name + '.pdf', FileFormat=17)
    except Exception:
        raise
    finally:
        worddoc.Close()
        word.Quit()


def doc2pdf_linux(doc):
    """
    convert a doc/docx document to pdf format (linux only, requires libreoffice)
    :param doc: path to document
    """
    cmd = 'libreoffice6.2 --headless --convert-to pdf'.split() + [doc]
    p = subprocess.Popen(cmd, stderr=subprocess.PIPE, stdout=subprocess.PIPE)
    p.wait(timeout=10)
    stdout, stderr = p.communicate()
    if stderr:
        raise subprocess.SubprocessError(stderr)

简直完美,可以收工了

相关文章
|
8月前
|
XML 数据格式 Python
从手动编辑到代码生成:Python 助你高效创建 Word 文档
本文介绍如何用Python实现Word文档自动化生成,结合python-docx、openpyxl和matplotlib库,高效完成报告撰写、数据插入与图表生成,大幅提升办公效率,降低格式错误,实现数据驱动的文档管理。
1126 2
|
10月前
|
安全 JavaScript 开发者
Python 自动化办公神器|一键转换所有文档为 PDF
本文介绍一个自动化批量将 Word、Excel、PPT、TXT、HTML 及图片转换为 PDF 的 Python 脚本。支持多格式识别、错误处理与日志记录,适用于文档归档、报告整理等场景,大幅提升办公效率。仅限 Windows 平台,需安装 Office 及相关依赖。
539 0
|
9月前
|
小程序
公众号如何添加附传Word、Excel、Pdf、PPT文档
公众号里添加一些文档给公众号粉丝下载,比如课件PPT、申请表Word文档、岗位需求Excel表、大赛入围/获奖名单等。公众号本身是不支持直接上传文件的,但我们可以通过附件小程序“间接”上传文件。
1455 0
|
11月前
|
存储 人工智能 文字识别
三款安卓手机word编辑器下载,Microsoft Word,wps office,Word手机版,手机word编辑查看阅读器,PDF转换器apk下载
WPS Office是一款功能强大的办公软件,支持文档编辑、表格处理和演示文稿制作,兼容多种格式并提供丰富的云服务。它具备低内存占用、快速运行的特点,支持跨设备同步与多人协作,内置海量模板及AI辅助功能,如智能写作和PPT自动生成。此外,还可扫描文件、编辑PDF并转换为其他格式,极大提升办公效率,适合手机用户便捷操作。
1230 1
|
11月前
|
Python
Python 办公实战:用 python-docx 自动生成 Word 文档
本文详解如何使用 python-docx 库实现 Word 文档自动化生成,涵盖环境搭建、文档创建、格式设置、表格与图片处理、模板填充、批量生成及性能优化等实战技巧,助你高效完成办公场景中的文档自动化任务。
2638 1
|
10月前
|
监控 Linux 数据安全/隐私保护
Python实现Word转PDF全攻略:从入门到实战
在数字化办公中,Python实现Word转PDF自动化,可大幅提升处理效率,解决格式兼容问题。本文详解五种主流方案,包括跨平台的docx2pdf、Windows原生的pywin32、服务器部署首选的LibreOffice命令行、企业级的Aspose.Words,以及轻量级的python-docx+pdfkit组合。每种方案均提供核心代码与适用场景,并涵盖中文字体处理、表格优化、批量进度监控等实用技巧,助力高效办公自动化。
2101 0
|
人工智能 算法 安全
使用CodeBuddy实现批量转换PPT、Excel、Word为PDF文件工具
通过 CodeBuddy 实现本地批量转换工具,让复杂的文档处理需求转化为 “需求描述→代码生成→一键运行” 的极简流程,真正实现 “技术为效率服务” 的目标。感兴趣的快来体验下把
902 10
|
存储 人工智能 文字识别
pdf-craft:PDF秒转Markdown/EPUB!接入DeepSeek轻松生成电子书,自动整理目录、注释和引文
pdf-craft是一款专注于处理扫描书籍PDF的开源工具,能精准提取正文内容并转换为Markdown/EPUB格式,通过AI算法解决跨页连贯性问题,是学术研究和电子书制作的利器。
3075 10
DeepSeek + Xmind,1分钟自动把pdf/word文档转成思维导图
DeepSeek与Xmind结合,1分钟将PDF、Word文档转换为思维导图。只需四步:上传文档至DeepSeek,请求转换为Markdown格式,保存文件并修改后缀为.md,最后导入Xmind生成思维导图。轻松驾驭复杂文档,适用于学习笔记、工作报告、项目规划等场景,大幅提升效率!
|
机器学习/深度学习 人工智能 文字识别
Zerox:AI驱动的万能OCR工具,精准识别复杂布局并输出Markdown格式,支持PDF、DOCX、图片等多种文件格式
Zerox 是一款开源的本地化高精度OCR工具,基于GPT-4o-mini模型,支持PDF、DOCX、图片等多种格式文件,能够零样本识别复杂布局文档,输出Markdown格式结果。
1768 4
Zerox:AI驱动的万能OCR工具,精准识别复杂布局并输出Markdown格式,支持PDF、DOCX、图片等多种文件格式

推荐镜像

更多