日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > linux >内容正文

linux

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

發布時間:2024/1/23 linux 32 豆豆
生活随笔 收集整理的這篇文章主要介紹了 python win32转pdf 横版_使用Python3将word文档和pdf电子书进行格式互转(兼容Windows/Linux)... 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

一些重要文檔格式之間的互轉在目前顯得尤為重要,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-*

安裝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)

簡直完美,可以收工了

總結

以上是生活随笔為你收集整理的python win32转pdf 横版_使用Python3将word文档和pdf电子书进行格式互转(兼容Windows/Linux)...的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。