Python實(shí)現(xiàn)批量word文檔轉(zhuǎn)pdf并統(tǒng)計(jì)其頁(yè)碼
pypdf2是一個(gè)Python模塊,可以用來(lái)讀取、寫(xiě)入和操作PDF文件。要安裝pypdf2模塊,請(qǐng)按照以下步驟操作:
確保你已經(jīng)安裝了Python。你可以在終端或命令提示符中輸入python --version來(lái)檢查Python是否已安裝。
pypdf2模塊的安裝:
ModuleNotFoundError: No module named ‘PyPDF2’

安裝完成后,你可以在Python中使用pypdf2模塊來(lái)讀取、寫(xiě)入和操作PDF文件。
例如,要讀取一個(gè)PDF文件中的文本內(nèi)容,你可以在Python腳本中導(dǎo)入pypdf2模塊,然后使用PdfFileReader類讀取文件并遍歷每個(gè)頁(yè)面。下面是一個(gè)簡(jiǎn)單的示例代碼:
import pypdf2
pdf_file = pypdf2.PdfFileReader('example.pdf')
for page_num in range(pdf_file.getNumPages()):
page = pdf_file.getPage(page_num)
print(page.extractText())
這將打印出PDF文件中的每個(gè)頁(yè)面的文本內(nèi)容。
注意:
因PyPDF2 版本更新原因,一些類和函數(shù)已經(jīng)過(guò)時(shí),想要采用替代函數(shù),例如獲取pdf 頁(yè)數(shù) getNumPages 替換為直接使用 len(reader.pages)。
下面是兩個(gè)報(bào)錯(cuò)的提示,把函數(shù)替換掉就行
PyPDF2.errors.DeprecationError: PdfFileReader is deprecated and was removed in PyPDF2 3.0.0. Use PdfReader instead.
PyPDF2.errors.DeprecationError: reader.getNumPages is deprecated and was removed in PyPDF2 3.0.0. Use len(reader.pages) instead.

利用Python代碼實(shí)現(xiàn)批量word文檔轉(zhuǎn)換成PDF格式
并對(duì)轉(zhuǎn)換的文檔,進(jìn)行頁(yè)碼統(tǒng)計(jì),如下(代碼示例)
# -*- coding:utf-8 -*-
import os # 導(dǎo)入系統(tǒng)功能模塊
from win32com.client import Dispatch, DispatchEx # 導(dǎo)入pywin32模塊的client包下的函數(shù)
from win32com.client import constants # 導(dǎo)入pywin32模塊的client包下的保存COM常量的類
from win32com.client import gencache # 導(dǎo)入pywin32模塊的client包下的gencache函數(shù)
from PyPDF2 import PdfReader # 獲取頁(yè)碼用
import re # 導(dǎo)入正則表達(dá)式模塊
import pythoncom # 導(dǎo)入封裝了OLE自動(dòng)化API的模塊,該模塊為pywin32的子模塊
'''獲取指定目錄下的文件
filepath:要遍歷的目錄
filelist_out:輸出文件列表
file_ext:文件的擴(kuò)展名,默認(rèn)為任何類型的文件
'''
def getfilenames(filepath='',filelist_out=[],file_ext='all'):
# 遍歷filepath下的所有文件,包括子目錄下的文件
for fpath, dirs, fs in os.walk(filepath):
for f in fs:
fi_d = os.path.join(fpath, f)
if file_ext == '.doc': # 遍歷Word文檔文件
if os.path.splitext(fi_d)[1] in ['.doc','.docx']: # 判斷是否為Word文件
filelist_out.append(re.sub(r'\\','/',fi_d)) # 添加到路徑列表中
else:
if file_ext == 'all': # 要獲取所有文件的情況
filelist_out.append(fi_d) # 將文件路徑添加到路徑列表中
elif os.path.splitext(fi_d)[1] == file_ext: # 要獲取除了Wrod文件以外的文件
filelist_out.append(fi_d) # 將文件路徑添加到路徑列表中
else:
pass
filelist_out.sort() # 對(duì)路徑進(jìn)行排序
return filelist_out # 返回文件完整路徑列表
# Word轉(zhuǎn)換為PDF(多個(gè)文件)
def wordtopdf(filelist,targetpath):
totalPages = 0 # 記錄總頁(yè)碼
valueList = []
try:
pythoncom.CoInitialize() # 調(diào)用線程初始化COM庫(kù),解決調(diào)用Word 2007時(shí)出現(xiàn)“尚未調(diào)用CoInitialize”錯(cuò)誤的問(wèn)題
gencache.EnsureModule('{00020905-0000-0000-C000-000000000046}', 0, 8, 4)
# 開(kāi)始轉(zhuǎn)換
w = Dispatch("Word.Application")
for fullfilename in filelist:
(filepath,filename) = os.path.split(fullfilename) # 分割文件路徑和文件名,其中,filepath表示文件路徑;filename表示文件名
softfilename = os.path.splitext(filename) # 分割文件名和擴(kuò)展名
os.chdir(filepath)
doc = os.path.abspath(filename)
os.chdir(targetpath)
pdfname = softfilename[0] + ".pdf"
output = os.path.abspath(pdfname)
pdf_name = output
# 文檔路徑需要為絕對(duì)路徑,因?yàn)閃ord啟動(dòng)后當(dāng)前路徑不是調(diào)用腳本時(shí)的當(dāng)前路徑。
try: # 捕捉異常
doc = w.Documents.Open(doc, ReadOnly=1)
doc.ExportAsFixedFormat(output, constants.wdExportFormatPDF, \
Item=constants.wdExportDocumentWithMarkup,
CreateBookmarks=constants.wdExportCreateHeadingBookmarks)
except Exception as e: # 處理異常
print(e)
if os.path.isfile(pdf_name): # 判斷文件是否存在
# 獲取頁(yè)碼
pages = getPdfPageNum(pdf_name) # 獲取頁(yè)碼
valueList.append([fullfilename,str(pages)])
totalPages += pages # 累加頁(yè)碼
# os.remove(pdf_name) # 刪除生成的PDF文件
else:
print('轉(zhuǎn)換失??!')
return False
w.Quit(constants.wdDoNotSaveChanges) # 退出Word應(yīng)用程序
return totalPages,valueList # 返回總頁(yè)碼和每個(gè)文檔的頁(yè)碼
except TypeError as e:
print('出錯(cuò)了!')
print(e)
return False
'''
功能:統(tǒng)計(jì)文檔頁(yè)碼
path:文件絕對(duì)路徑
'''
def getPdfPageNum(path):
with open(path, "rb") as file:
doc = PdfReader(file)
pagecount = len(doc.pages)
return pagecount
if __name__ == '__main__':
sourcepath = r"C:/Users/Lenovo/Desktop/python代碼示例/word/" # 指定源路徑(Word文檔所在路徑)
targetpath = r"C:/Users/Lenovo/Desktop/python代碼示例/pdf/" # 指定目標(biāo)路徑(PDF保存路徑)
filelist = getfilenames(sourcepath,[],'.doc') # 獲取Word文檔路徑
valueList = wordtopdf(filelist,targetpath) # 實(shí)現(xiàn)將Word文檔批量轉(zhuǎn)換為PDF
resultList = valueList[1] # 獲取統(tǒng)計(jì)結(jié)果
if valueList:
for i in resultList:
print(i[0],i[1])
totalPages = str(valueList[0]) # 總頁(yè)數(shù)
print("合計(jì)頁(yè)數(shù):",totalPages)
else:
print("沒(méi)有要統(tǒng)計(jì)的文件或者統(tǒng)計(jì)失??!")
以上就是Python實(shí)現(xiàn)批量word文檔轉(zhuǎn)pdf并統(tǒng)計(jì)其頁(yè)碼的詳細(xì)內(nèi)容,更多關(guān)于Python word轉(zhuǎn)pdf的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!
- Python實(shí)現(xiàn)Word批量轉(zhuǎn)PDF的小工具
- Python中PDF轉(zhuǎn)Word的多種實(shí)現(xiàn)方法
- Python將Word文檔轉(zhuǎn)為PDF的兩種方法
- Python將Office文檔(Word、Excel、PDF、PPT)轉(zhuǎn)為OFD格式的實(shí)現(xiàn)方法
- Python實(shí)現(xiàn)PDF轉(zhuǎn)Word的多種方式總結(jié)
- Python實(shí)現(xiàn)批量將word轉(zhuǎn)換成pdf
- 如何利用Python將html轉(zhuǎn)為pdf、word文件
- 使用Python輕松實(shí)現(xiàn)Word批量轉(zhuǎn)換為PDF
相關(guān)文章
tensorflow使用L2 regularization正則化修正overfitting過(guò)擬合方式
這篇文章主要介紹了tensorflow使用L2 regularization正則化修正overfitting過(guò)擬合方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2020-05-05
關(guān)于Python中Flask全局異常處理流程詳解
Flask是一個(gè)基于Python的Web框架,它提供了全局異常處理的機(jī)制來(lái)捕獲和處理應(yīng)用程序中的異常,本文將詳細(xì)介紹Flask的全局異常處理,并提供相應(yīng)的代碼示例,需要的朋友可以參考下2023-06-06
對(duì)tensorflow中cifar-10文檔的Read操作詳解
今天小編就為大家分享一篇對(duì)tensorflow中cifar-10文檔的Read操作詳解,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2020-02-02
pytorch中tensor張量數(shù)據(jù)類型的轉(zhuǎn)化方式
今天小編就為大家分享一篇pytorch中tensor張量數(shù)據(jù)類型的轉(zhuǎn)化方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2019-12-12
python自動(dòng)化測(cè)試之破解滑動(dòng)驗(yàn)證碼
這篇文章介紹了python自動(dòng)化破解之破解滑動(dòng)驗(yàn)證碼的解決方案,文中通過(guò)示例代碼介紹的非常詳細(xì)。對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2022-07-07
python數(shù)字圖像處理實(shí)現(xiàn)直方圖與均衡化
在圖像處理中,直方圖是非常重要,也是非常有用的一個(gè)處理要素。這篇文章主要介紹了python數(shù)字圖像處理實(shí)現(xiàn)直方圖與均衡化,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2018-05-05
Python編寫(xiě)車票訂購(gòu)系統(tǒng)?Python實(shí)現(xiàn)快遞收費(fèi)系統(tǒng)
這篇文章主要為大家詳細(xì)介紹了Python編寫(xiě)車票訂購(gòu)系統(tǒng),Python實(shí)現(xiàn)快遞收費(fèi)系統(tǒng),文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2022-08-08
python函數(shù)調(diào)用,循環(huán),列表復(fù)制實(shí)例
這篇文章主要介紹了python函數(shù)調(diào)用,循環(huán),列表復(fù)制實(shí)例,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2020-05-05

