最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Python實(shí)現(xiàn)批量word文檔轉(zhuǎn)pdf并統(tǒng)計(jì)其頁(yè)碼

 更新時(shí)間:2023年05月29日 11:59:44   作者:逃逸的卡路里  
pypdf2是一個(gè)Python模塊,可以用來(lái)讀取、寫入和操作PDF文件,本文就將利用該模塊實(shí)現(xiàn)批量word文檔轉(zhuǎn)pdf并統(tǒng)計(jì)其頁(yè)碼,需要的小伙伴可以了解一下

pypdf2是一個(gè)Python模塊,可以用來(lái)讀取、寫入和操作PDF文件。要安裝pypdf2模塊,請(qǐng)按照以下步驟操作:

確保你已經(jīng)安裝了Python。你可以在終端或命令提示符中輸入python --version來(lái)檢查Python是否已安裝。

pypdf2模塊的安裝:

ModuleNotFoundError: No module named ‘PyPDF2’

安裝完成后,你可以在Python中使用pypdf2模塊來(lái)讀取、寫入和操作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)
        # 開始轉(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)文章!

相關(guān)文章

  • Python判斷字符串是否包含特定子字符串的多種方法(7種方法)

    Python判斷字符串是否包含特定子字符串的多種方法(7種方法)

    我們經(jīng)常會(huì)遇這樣一個(gè)需求判斷字符串中是否包含某個(gè)關(guān)鍵詞,也就是特定的子字符串,接下來(lái)通過(guò)本文給大家分享Python判斷字符串是否包含特定子字符串的多種方法(7種方法),需要的朋友可以參考下
    2023-03-03
  • 詳解python的webrtc庫(kù)實(shí)現(xiàn)語(yǔ)音端點(diǎn)檢測(cè)

    詳解python的webrtc庫(kù)實(shí)現(xiàn)語(yǔ)音端點(diǎn)檢測(cè)

    這篇文章主要介紹了詳解python的webrtc庫(kù)實(shí)現(xiàn)語(yǔ)音端點(diǎn)檢測(cè),小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2017-05-05
  • Python3對(duì)稱加密算法AES、DES3實(shí)例詳解

    Python3對(duì)稱加密算法AES、DES3實(shí)例詳解

    這篇文章主要介紹了Python3對(duì)稱加密算法AES、DES3,結(jié)合實(shí)例形式詳細(xì)分析了對(duì)稱加密算法AES、DES3相關(guān)模塊安裝、使用技巧與操作注意事項(xiàng),需要的朋友可以參考下
    2018-12-12
  • Python參數(shù)傳遞實(shí)現(xiàn)過(guò)程及原理詳解

    Python參數(shù)傳遞實(shí)現(xiàn)過(guò)程及原理詳解

    這篇文章主要介紹了Python參數(shù)傳遞實(shí)現(xiàn)過(guò)程及原理詳解,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-05-05
  • python sorted函數(shù)的小練習(xí)及解答

    python sorted函數(shù)的小練習(xí)及解答

    這篇文章主要介紹了python sorted函數(shù)的小練習(xí)及解答,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2019-09-09
  • windows下 兼容Python2和Python3的解決方法

    windows下 兼容Python2和Python3的解決方法

    這篇文章主要介紹了windows下 兼容Python2和Python3的解決方法,需要的朋友可以參考下
    2018-12-12
  • Python實(shí)現(xiàn)定時(shí)任務(wù)調(diào)度器的示例詳解

    Python實(shí)現(xiàn)定時(shí)任務(wù)調(diào)度器的示例詳解

    這篇文章主要為大家詳細(xì)介紹了如何使用Python實(shí)現(xiàn)定時(shí)任務(wù)調(diào)度器,用于自動(dòng)化執(zhí)行各種重復(fù)性任務(wù),文中的示例代碼講解詳細(xì),有需要的可以了解下
    2025-12-12
  • Python實(shí)現(xiàn)信息管理系統(tǒng)

    Python實(shí)現(xiàn)信息管理系統(tǒng)

    這篇文章主要為大家詳細(xì)介紹了Python實(shí)現(xiàn)信息管理系統(tǒng),文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2022-06-06
  • python作圖基礎(chǔ)之plt.contour實(shí)例詳解

    python作圖基礎(chǔ)之plt.contour實(shí)例詳解

    contour和contourf都是畫三維等高線圖的,下面這篇文章主要給大家介紹了關(guān)于python作圖基礎(chǔ)操作之plt.contour的相關(guān)資料,文中通過(guò)實(shí)例代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2022-06-06
  • mac在matplotlib中顯示中文的操作方法

    mac在matplotlib中顯示中文的操作方法

    這篇文章主要介紹了mac如何在matplotlib中顯示中文,本文分步驟給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2020-03-03

最新評(píng)論

柞水县| 宜阳县| 新昌县| 金溪县| 额济纳旗| 兴业县| 田东县| 名山县| 扶绥县| 双峰县| 汶上县| 鲁山县| 富锦市| 文安县| 崇义县| 扶余县| 东至县| 嵊州市| 称多县| 府谷县| 芒康县| 色达县| 泰安市| 介休市| 瓮安县| 莱阳市| 武平县| 林西县| 尼木县| 玉林市| 靖江市| 威信县| 金溪县| 天柱县| 博爱县| 岚皋县| 青田县| 天峻县| 三河市| 年辖:市辖区| 响水县|