本文章實現不同環境,word文檔轉pdf文檔
文章目錄
一、linux環境
1、環境安裝
去網站下載最新版libreoffice安裝包
https://mirrors.cloud.tencent.com/libreoffice/libreoffice/stable/
以下幾個版本都可以
deb是ubuntu,mac是蘋果,rpm是centos
選擇LibreOffice_6.4.4_Linux_x86-64_rpm.tar.gz
解壓:
tar -zxvf LibreOffice_6.4.4_Linux_x86-64_rpm.tar.gz
安裝:
cd LibreOffice_6.4.4.2_Linux_x86-64_rpm/RPMS/
yum localinstall *.rpm
2、測試安裝是否成功:
libreoffice6.4 --version
命令轉格式測試:
libreoffice6.4 --convert-to pdf:writer_pdf_Export ./123.docx --outdir ./
問題彙總:
1、如果libreoffice出現cpu100%並且長時間無響應
2、word轉pdf之後,中文亂碼
解決方法(注:方法1基本就解決了上述兩個問題):
1、linux系統缺少中文字體導致
具體操作:
建一個chinese目錄,找到windows的C:\Windows\Fonts的部分字體,msyh.ttf,msyhbd.ttf,simsun.ttc,simkai.ttf,simhei.ttf,simfang.ttf,把字體放到chinese目錄裏。並把此目錄移動到linux中的/usr/share/fonts/下
chmod -R 755 /usr/share/fonts/chinese //賦予權限
fc-list | grep chinese // 可以查看到已安裝新增的字體了
2、禁用libreoffice屏幕顯示(不一定管用)
# 找到安裝目錄sofficerc文件
vim /etc/libreoffice/sofficerc
Logo=1 改爲 Logo=0
二、windows環境
1、環境安裝
pip install pypiwin32
測試可以用集成代碼
三、windows和linux集成代碼
import os
import platform
import subprocess
from win32com.client import Dispatch
def doc2pdf_windows(input_file):
word = Dispatch('Word.Application')
doc = word.Documents.Open(input_file)
doc.SaveAs(input_file.replace(".doc", ".pdf"), FileFormat=17)
doc.Close()
word.Quit()
def doc2pdf_linux(docFile):
"""
convert a doc/docx document to pdf format (linux only, requires libreoffice)
:param doc: path to document
"""
file_path = os.path.dirname(os.path.realpath(docFile))
cmd = 'libreoffice6.4 --convert-to pdf:wirter_pdf_Export'.split() + [docFile] + ['--outdir'] + [file_path]
p = subprocess.Popen(cmd, stderr=subprocess.PIPE, stdout=subprocess.PIPE)
p.wait(timeout=30)
stdout, stderr = p.communicate()
if stderr:
raise subprocess.SubprocessError(stderr)
if __name__ == '__main__':
file = 'D:\\work\\code\\test.doc'
sys = platform.system()
if sys == "Windows":
doc2pdf_windows(file)
elif sys == "Linux":
doc2pdf_linux(file)