Python代碼實(shí)現(xiàn)PDF與Word之間互轉(zhuǎn)
一、pdf轉(zhuǎn)docx
將PDF 格式轉(zhuǎn)換為Word格式要求很高,很多的轉(zhuǎn)換網(wǎng)頁(yè)需要付費(fèi)、而且轉(zhuǎn)換的效果不好。
在Python中,利用pdf2docx庫(kù)可以很好地實(shí)現(xiàn)這個(gè)需求,直接使用pip安裝即可。
pip install pdf2docx
坐等安裝完成

該模塊有一個(gè)convert()方法,可以實(shí)現(xiàn)將PDF格式轉(zhuǎn)換為Word格式
(默認(rèn)轉(zhuǎn)換整個(gè)文檔)完整代碼如下:
from pdf2docx import Converter
cv = Converter("C:/Users/ypzhao/Desktop/畢業(yè)論文.pdf")
cv.convert("C:/Users/ypzhao/Desktop/畢業(yè).docx", start=0, end=None)
cv.close()
(轉(zhuǎn)換指定范圍)完整代碼如下:
from pdf2docx import Converter
cv = Converter("C:/Users/ypzhao/Desktop/畢業(yè)論文.pdf")
cv.convert("C:/Users/ypzhao/Desktop/畢業(yè)論文.docx", pages=[0,2])
cv.close()
使用 pages 參數(shù)指定要轉(zhuǎn)換的頁(yè)碼范圍。
二、docx轉(zhuǎn)pdf
首先安裝庫(kù)
pip install pypiwin32
from win32com.client import Dispatch
old_file_path = r"C:/Users/ypzhao/Desktop/畢業(yè)論文.docx"
new_file_path = r"C:/Users/ypzhao/Desktop/畢業(yè)論文_convert.pdf"
word = Dispatch('Word.Application')
doc = word.Documents.Open(old_file_path)
doc.SaveAs(new_file_path,17)
doc.Close()
word.Quit()
轉(zhuǎn)換后的效果和另存為的pdf的效果一樣
首先,需要 import win32com 庫(kù)中的 Dispatch 類(lèi)。然后,定義變量 old_file_path 和 new_file_path 分別表示原文件路徑和目標(biāo)文件路徑。在這里,原文件路徑為 “C:/Users/ypzhao/Desktop/畢業(yè)論文.docx”,目標(biāo)文件路徑為 “C:/Users/ypzhao/Desktop/畢業(yè)論文_convert.pdf”。
接著,創(chuàng)建一個(gè) Word.Application 對(duì)象,并打開(kāi)原文件,獲取 Document 對(duì)象。調(diào)用 SaveAs 方法,將文檔以 PDF 格式保存到指定路徑,并設(shè)置參數(shù) 17 指定文檔的保存格式為 PDF。最后,關(guān)閉文檔,并退出 Word 應(yīng)用程序。
win32com 庫(kù)可以幫助我們?cè)?Python 程序中使用 Windows 中的 COM 應(yīng)用程序,比如 Word、Excel、PowerPoint 等 Office 軟件,從而實(shí)現(xiàn)自動(dòng)化操作。在上述代碼中,我們利用 win32com 庫(kù)的 Dispatch 類(lèi)創(chuàng)建了一個(gè) Word.Application 的對(duì)象,之后打開(kāi)了指定的 DOCX 文檔,并通過(guò) SaveAs 方法將其另存為 PDF 格式的文檔。該過(guò)程完全不需要手動(dòng)干預(yù),實(shí)現(xiàn)了自動(dòng)化處理,提高了效率。
三、doc轉(zhuǎn)換為docx
from win32com.client import Dispatch
old_file_path = r"C:/Users/ypzhao/Desktop/畢業(yè)論文.doc"
new_file_path = r"C:/Users/ypzhao/Desktop/畢業(yè)論文_convert.docx"
word = Dispatch('Word.Application')
doc = word.Documents.Open(old_file_path)
doc.SaveAs(new_file_path,12)
doc.Close()
word.Quit()
四、xls格式轉(zhuǎn)換為xlsx
from win32com.client import Dispatch
old_file_path = r"C:/Users/ypzhao/Desktop/畢業(yè)論文.xls"
new_file_path = r"C:/Users/ypzhao/Desktop/畢業(yè)論文_convert.xlsx"
excel = Dispatch('Excel.Application')
wb = excel.Workbooks.Open(old_file_path)
wb.SaveAs(new_file_path,51)
wb.Close()
excel.Quit()
五、pdf批量轉(zhuǎn)換成docx
通過(guò)使用 pdf2docx 庫(kù)實(shí)現(xiàn)了將 PDF 格式的文件批量轉(zhuǎn)換為 DOCX 格式的文件。
首先,定義變量 path 和 path_convert 分別表示原文件所在目錄和轉(zhuǎn)換后文件存儲(chǔ)目錄。此處分別為 “C:/Users/ypzhao/Desktop/pdf/” 和 “C:/Users/ypzhao/Desktop/docx/”。
然后,使用 os 模塊中的 listdir 方法遍歷目錄下所有文件,判斷文件類(lèi)型如果是 PDF,則進(jìn)行轉(zhuǎn)換。利用 Converter 類(lèi)打開(kāi) PDF 文件,指定轉(zhuǎn)換后的目標(biāo)文件名為 {file_name}.docx,并調(diào)用 convert 方法將其轉(zhuǎn)換為 DOCX 文件,并指定頁(yè)碼范圍。最后,關(guān)閉 Converter 對(duì)象,轉(zhuǎn)換完成。
import os
from pdf2docx import Converter
path = "C:/Users/ypzhao/Desktop/pdf/"
path_convert = "C:/Users/ypzhao/Desktop/docx/"
for i in os.listdir(path):
file_name,file_suffix = i.split(".")
if file_suffix == "pdf":
cv = Converter(path+f"{i}")
cv.convert(path_convert+f"{file_name}"+".docx", start=0, end=None)
cv.close()
else:
pass
六、docx批量轉(zhuǎn)成pdf
from time import sleep
import os
from win32com.client import Dispatch
path = "C:/Users/ypzhao/Desktop/docx/"
path_convert = "C:/Users/ypzhao/Desktop/pdf/"
print("-----doc開(kāi)始轉(zhuǎn)換為docx-----")
for i in os.listdir(path):
file_name,file_suffix = i.split(".")
if file_suffix == "doc":
word = Dispatch('Word.Application')
doc = word.Documents.Open(path+f"{i}")
doc.SaveAs(path+f"{file_name}.docx",FileFormat=12)
print(i,"轉(zhuǎn)換完成")
doc.Close()
word.Quit()
sleep(3)
print("-----開(kāi)始轉(zhuǎn)換為pdf-----")
for i in os.listdir(path):
file_name,file_suffix = i.split(".")
if file_suffix == "docx":
word = Dispatch('Word.Application')
doc = word.Documents.Open(path+f"{i}")
doc.SaveAs(path_convert+f"{file_name}.pdf",FileFormat=17)
print(i,"...轉(zhuǎn)換完成")
doc.Close()
word.Quit()
sleep(3)
else:
pass
這段代碼的作用是將指定目錄下的 Word 文檔(.doc)轉(zhuǎn)換為 Word 文檔(.docx),然后再將其轉(zhuǎn)換為 PDF 格式。
其中,代碼中使用了 sleep(3) 函數(shù)來(lái)暫停程序執(zhí)行,是為了避免在 Word 應(yīng)用程序未完全關(guān)閉之前就打開(kāi)下一個(gè)文檔導(dǎo)致程序出錯(cuò)。
需要注意的是,由于在進(jìn)行文檔轉(zhuǎn)換時(shí)可能會(huì)出現(xiàn)各種問(wèn)題,例如格式錯(cuò)誤、頁(yè)面布局混亂等,因此建議在轉(zhuǎn)換完成后手動(dòng)檢查一下轉(zhuǎn)換后的文檔是否正常。
以上就是Python代碼實(shí)現(xiàn)PDF與Word之間互轉(zhuǎn)的詳細(xì)內(nèi)容,更多關(guān)于Python PDF與Word互轉(zhuǎn)的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!
相關(guān)文章
基于Django框架利用Ajax實(shí)現(xiàn)點(diǎn)贊功能實(shí)例代碼
點(diǎn)贊這個(gè)功能是我們現(xiàn)在經(jīng)常會(huì)遇到的一個(gè)功能,下面這篇文章主要給大家介紹了關(guān)于基于Django框架利用Ajax實(shí)現(xiàn)點(diǎn)贊功能的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2018-08-08
基于django channel實(shí)現(xiàn)websocket的聊天室的方法示例
這篇文章主要介紹了基于基于django channel實(shí)現(xiàn)websocket的聊天室的方法示例,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2019-04-04
python散點(diǎn)圖實(shí)例之隨機(jī)漫步
這篇文章主要為大家詳細(xì)介紹了python散點(diǎn)圖實(shí)例之隨機(jī)漫步,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2018-08-08
分享11個(gè)Python自動(dòng)化操作Excel的方法
這篇文章主要給大家分享的是11個(gè)Python自動(dòng)化操作Excel的方法,自動(dòng)化辦公,我相信很多人都有強(qiáng)烈的需求,今天我教大家如何利用Python自動(dòng)化操作Excel,需要的朋友可以參考一下2022-02-02
Python中reset_index()函數(shù)的使用
本文主要介紹了Python中reset_index()函數(shù)的使用,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2023-05-05
在django項(xiàng)目中導(dǎo)出數(shù)據(jù)到excel文件并實(shí)現(xiàn)下載的功能
這篇文章主要介紹了在django項(xiàng)目中導(dǎo)出數(shù)據(jù)到excel文件并實(shí)現(xiàn)下載的功能,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2020-03-03
Python按行讀取文件的實(shí)現(xiàn)方法【小文件和大文件讀取】
這篇文章主要介紹了Python按行讀取文件的實(shí)現(xiàn)方法,結(jié)合實(shí)例形式分析了針對(duì)小文件和大文件的讀取方法,需要的朋友可以參考下2016-09-09

