由于需要实现在线预览
word
文件的一个需求,尝试将word
转换成html
效果很差,于是想要将word
转换为word
转换成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
库执行控制台指令,调用Libreoffice
将word
转换成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))
网友评论