美文网首页
python 将word转PDF

python 将word转PDF

作者: 忘了呼吸的那只猫 | 来源:发表于2021-12-03 16:33 被阅读0次

由于需要实现在线预览word文件的一个需求,尝试将word转换成html效果很差,于是想要将word转换为PDF,但没有找到能够直接将word转换成PDF文件的python库,所以我决定使用office组件或者Libreoffice组件来实现;

1.使用office组件将word转换成PDF文件(缺点:只支持windows平台)

原理:使用python win32 库 调用word底层vba,将word转成pdf

  • 安装win32库
pip install pywin32 

本地选装office套件,可以安装比较稳定的版本,比如office2010

from win32com.client import gencache
from win32com.client import constants, gencache

def createPdf(wordPath, pdfPath):
    """
    word转pdf
    :param wordPath: word文件路径
    :param pdfPath:  生成pdf文件路径
    """
    word = gencache.EnsureDispatch('Word.Application')
    doc = word.Documents.Open(wordPath, ReadOnly=1)
    doc.ExportAsFixedFormat(pdfPath,
                            constants.wdExportFormatPDF,
                            Item=constants.wdExportDocumentWithMarkup,
                            CreateBookmarks=constants.wdExportCreateHeadingBookmarks)
    word.Quit(constants.wdDoNotSaveChanges)
if __name__ == '__main__':
    createPdf('C:\\Users\\Administrator\\Desktop\\test.docx','C:\\Users\\Administrator\\Desktop\\1.pdf')

注意word文件路径和生成pdf文件路径一定要使用绝对路径

2.使用Libreoffice组件将word转换成PDF文件(可跨平台,但操作略微不同)

原理:使用python os库执行控制台指令,调用Libreofficeword转换成PDF
首先:安装Libreoffice安装地址>>
注意:安装完毕一定要设置环境变量
安装完毕之后打开控制台,
windows输入:soffice
Liunx输入:libreoffice6.4(6.4是版本,安装不同版本这个数字不一样)
如果没有提示什么异常情况就安装成功了(这里不多说)
windows下代码:

import os
 
import_file_name = "./test/test.docx"
output_file_path = "./test/"
os.system("soffice --headless --convert-to pdf %s --outdir %s" % (import_file_name, output_file_path))

Linux下代码:

import os
 
import_file_name = "/test/test.docx"
output_file_path = "/test/"
os.system("libreoffice6.4 --headless --convert-to pdf %s --outdir %s" % (import_file_name, output_file_path))

相关文章

网友评论

      本文标题:python 将word转PDF

      本文链接:https://www.haomeiwen.com/subject/srxmxrtx.html