由于需要實現(xiàn)在線預(yù)覽
word
文件的一個需求琐馆,嘗試將word
轉(zhuǎn)換成html
效果很差柒桑,于是想要將word
轉(zhuǎn)換為word
轉(zhuǎn)換成python
庫钞诡,所以我決定使用office
組件或者Libreoffice
組件來實現(xiàn);
1.使用office
組件將word
轉(zhuǎn)換成PDF
文件(缺點:只支持windows
平臺)
原理:使用python
win32
庫 調(diào)用word
底層vba
谷饿,將word
轉(zhuǎn)成pdf
- 安裝win32庫
pip install pywin32
本地選裝office
套件,可以安裝比較穩(wěn)定的版本,比如office2010
from win32com.client import gencache
from win32com.client import constants, gencache
def createPdf(wordPath, pdfPath):
"""
word轉(zhuǎn)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
轉(zhuǎn)換成PDF
文件(可跨平臺妈倔,但操作略微不同)
原理:使用python
os
庫執(zhí)行控制臺指令博投,調(diào)用Libreoffice
將word
轉(zhuǎn)換成PDF
首先:安裝Libreoffice
,安裝地址>>
注意:安裝完畢一定要設(shè)置環(huán)境變量
安裝完畢之后打開控制臺盯蝴,
windows輸入:soffice
Liunx輸入:libreoffice6.4
(6.4是版本毅哗,安裝不同版本這個數(shù)字不一樣)
如果沒有提示什么異常情況就安裝成功了(這里不多說)
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))