第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

Python 操作 Word 轉(zhuǎn)換 PDF

在工作中 Word 文檔通常不是最終版本,在發(fā)給甲方或者其他同事時(shí),我們還需要把Word文檔轉(zhuǎn)換為PDF格式文件。那為什么需要轉(zhuǎn)換 PDF,直接發(fā) Word 文檔又有什么問(wèn)題?

其實(shí)直接發(fā) Word 文檔問(wèn)題還是挺大的,可以大致總結(jié)以下幾點(diǎn):

  1. 由于每個(gè)人使用的軟件或版本都不統(tǒng)一,可能你使用的是微軟的 Office2007,而他使用的是金山WPS,這樣有可能你本地樣式已經(jīng)好好的 Word 文檔,在別人電腦上就出現(xiàn)了亂碼;
  2. PDF 可以直接預(yù)覽,目前主流瀏覽器都已經(jīng)支持;
  3. PDF 文件無(wú)法修改,保證了信息安全。

了解了轉(zhuǎn)換 PDF 格式文件的作用之后,接下來(lái)這一小節(jié)中,將介紹 Python 第三方模塊 pywin32 實(shí)現(xiàn)Word 文檔轉(zhuǎn)換為 PDF 格式文件。

1. pywin32 模塊介紹

在 Windows 上如需使用 Python 編寫(xiě)腳本,很多時(shí)候都需要用到 Windows API,但 Python 是沒(méi)有自帶訪問(wèn) Windows 系統(tǒng) API 的標(biāo)準(zhǔn)庫(kù),所以這時(shí)可以使用第三方庫(kù) pywin32 來(lái)解決,pywin32 模塊中直接包裝了幾乎所有的 Windows API,讓開(kāi)發(fā)者可以很方便的調(diào)用。

使用 python win32 庫(kù)實(shí)現(xiàn) Word 轉(zhuǎn)換 PDF,實(shí)際上是調(diào)用 Word 底層 vba,利用 Word 導(dǎo)出方法完成 PDF 轉(zhuǎn)換,文檔地址

1.1 安裝

pywin32 是 Python 的第三方庫(kù),使用前需要通過(guò)以下命令進(jìn)行安裝:

pip install pywin32

1.2 使用步驟

步驟1:導(dǎo)入 pywin32 下所需模塊

from win32com.client import constants,gencache

步驟2:?jiǎn)?dòng)一個(gè)新的 Word 進(jìn)程

word=gencache.EnsureDispatch('Word.Application')

步驟3:讀取要轉(zhuǎn)換的 Word 文檔

doc=word.Documents.Open(wordPath,ReadOnly=1)

步驟4:轉(zhuǎn)換 PDF 格式文件

doc.ExportAsFixedFormat(pdfPath,constants.wdExportFormatPDF)

ExportAsFixedFormat() 方法可以將文檔保存為 PDF 或 XPS 格式,第一個(gè)參數(shù)指定新的 PDF 或 XPS 文件的路徑和文件名,第二個(gè)參數(shù)是一個(gè)枚舉值(取值包括:wdExportFormatPDF 和 wdExportFormatXPS)用于指定轉(zhuǎn)換的格式,上述代碼中要將文檔轉(zhuǎn)換為 PDF 在設(shè)置時(shí)設(shè)置為constants.wdExportFormatPDF。

2. Word 文檔轉(zhuǎn)換 PDF

接下來(lái),通過(guò) pywin32 模塊分別實(shí)現(xiàn)單個(gè) Word 文檔的轉(zhuǎn)換和多個(gè)Word 文檔的轉(zhuǎn)換。

2.1 單個(gè)文件轉(zhuǎn)換

根據(jù)pywin32模塊的使用步驟,封裝轉(zhuǎn)換方法 createpdf 方法,代碼如下:

def createpdf(wordPath,pdfPath):
    word=gencache.EnsureDispatch('Word.Application')
    doc=word.Documents.Open(wordPath,ReadOnly=1)
    #轉(zhuǎn)換方法
     doc.ExportAsFixedFormat(pdfPath,constants.wdExportFormatPDF)

代碼解釋:EnsureDispatch() 方法為啟動(dòng)一個(gè)新的 Word 進(jìn)程,通過(guò)啟動(dòng)的 Word 進(jìn)程讀取傳入指定的Word 文檔,打開(kāi) Word 文檔后,通過(guò) ExportAsFixedFormat() 方法進(jìn)行導(dǎo)出 PDF,第一個(gè)參數(shù)為指定的PDF 文件存儲(chǔ)路徑,第二個(gè)參數(shù)為指定導(dǎo)出文件的類型,除 PDF 外,還可以傳入 XPS 格式。執(zhí)行完成后,生成了 “info.pdf” 格式文件,效果如下圖所示:

圖片描述

2.2 多個(gè)文件轉(zhuǎn)換

完成單個(gè) Word 文檔轉(zhuǎn)換之后,日常工作中有時(shí)會(huì)涉及到批量 Word文 檔的轉(zhuǎn)換,這時(shí)可以在單個(gè)Word 文檔轉(zhuǎn)換代碼的基礎(chǔ)上進(jìn)行完善,修改后代碼如下:

from win32com.client import constants,gencache
import os

def createpdf(wordPath,pdfPath):
    word=gencache.EnsureDispatch('Word.Application')
    doc=word.Documents.Open(wordPath,ReadOnly=1)
    #轉(zhuǎn)換方法
    doc.ExportAsFixedFormat(pdfPath,constants.wdExportFormatPDF)
  
#多個(gè)文件的轉(zhuǎn)換
print(os.listdir('.')) #當(dāng)前文件夾下的所有文件
wordfiles=[]
for file in os.listdir('.'):
    if file.endswith(('.doc','.docx')):
        wordfiles.append(file)

for file in wordfiles:
    filepath=os.path.abspath(file)
    index=filepath.rindex('.')
    # 拼接文件名及.pdf后綴
    pdfpath=filepath[:index]+'.pdf'
    createpdf(filepath,pdfpath) 

代碼解釋:通過(guò) Python 中內(nèi)置的os模塊,讀取指定目錄獲取所有的 Word 文檔,保存在wordfiles中。通過(guò)for…in循環(huán)wordfiles,在循環(huán)中,首先根據(jù)abspath()方法得到文檔的絕對(duì)路徑,將文檔名稱拼接.pdf作為PDF文件的新名稱。調(diào)用封裝好的createpdf() 方法將文檔路徑和PDF文件路徑傳入,進(jìn)行文件轉(zhuǎn)換。執(zhí)行完成后,在指定目錄就批量生成 PDF 格式文件。

3. pywin32 模塊拓展

前面提到pywin32 模塊中直接包裝了幾乎所有的 Windows API,除了前面小節(jié)介紹的轉(zhuǎn)換PDF外,還可以進(jìn)行如下操作,一起來(lái)體驗(yàn)下吧!

3.1 彈出MessageBox消息框

使用pywin32實(shí)現(xiàn)系統(tǒng)消息框的彈出,代碼如下:

import win32api
import win32con
win32api.MessageBox(0, "Hello Python", "消息框標(biāo)題", win32con.MB_OK)

代碼解釋:MessageBox() 方法彈出消息框,第一個(gè)參數(shù)標(biāo)識(shí)要?jiǎng)?chuàng)建的消息框的所有者窗口,第二個(gè)參數(shù)指向要顯示的消息,第三個(gè)參數(shù)表示對(duì)話框標(biāo)題,第四個(gè)參數(shù)指定一組位標(biāo)志來(lái)確定對(duì)話框的內(nèi)容和行為,取值范圍如下:

  • MB_ABORTRETRYIGNORE:消息框包含三個(gè)按鈕:中止,重試和忽略;
  • MB_OK:消息框包含一個(gè)按鈕:OK。這是默認(rèn)值;
  • MB_OKCANCEL:消息框包含兩個(gè)按鈕:確定和取消;
  • MB_RETRYCANCEL:消息框包含兩個(gè)按鈕:重試和取消;
  • MB_YESNO:消息框包含兩個(gè)按鈕:是和否;
  • MB_YESNOCANCEL:消息框包含三個(gè)按鈕:是,否和取消。

執(zhí)行完成后,彈出消息框效果如下圖所示:

圖片描述

3.2 模擬鍵盤(pán)操作

使用 pywin32 模擬按下鍵盤(pán)的回車鍵(Enter),代碼如下:

import win32api,win32con
win32api.keybd_event(13,0,win32con.KEYEVENTF_EXTENDEDKEY)

代碼解釋:keybd_event() 方法為觸發(fā)鍵盤(pán)事件,第一個(gè)參數(shù)為虛擬鍵碼(13表示回車鍵),第二個(gè)參數(shù)為硬件掃描碼,一般設(shè)置為0即可,第三個(gè)參數(shù)表示操作的標(biāo)志位,如果值為KEYEVENTF_EXTENDEDKEY則該鍵被按下,值為KEYEVENTF_KEYUP則該按鍵被釋放。

4. 小結(jié)

本節(jié)課程我們主要學(xué)習(xí)了 pywin32 模塊的使用。本節(jié)課程的重點(diǎn)如下:

  • 了解pywin32模塊作用及使用步驟;
  • 掌握 pywin32模塊實(shí)現(xiàn)Word文檔轉(zhuǎn)換PDF格式文件的方法;

圖片描述