欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

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

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

pypdf2是一個Python模塊,可以用來讀取、寫入和操作PDF文件。要安裝pypdf2模塊,請按照以下步驟操作:

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

pypdf2模塊的安裝:

ModuleNotFoundError: No module named ‘PyPDF2’

安裝完成后,你可以在Python中使用pypdf2模塊來讀取、寫入和操作PDF文件。

例如,要讀取一個PDF文件中的文本內(nèi)容,你可以在Python腳本中導(dǎo)入pypdf2模塊,然后使用PdfFileReader類讀取文件并遍歷每個頁面。下面是一個簡單的示例代碼:

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文件中的每個頁面的文本內(nèi)容。

注意:

因PyPDF2 版本更新原因,一些類和函數(shù)已經(jīng)過時,想要采用替代函數(shù),例如獲取pdf 頁數(shù) getNumPages 替換為直接使用 len(reader.pages)。

下面是兩個報錯的提示,把函數(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代碼實現(xiàn)批量word文檔轉(zhuǎn)換成PDF格式

并對轉(zhuǎn)換的文檔,進行頁碼統(tǒng)計,如下(代碼示例)

# -*- 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  # 獲取頁碼用
import re  # 導(dǎo)入正則表達式模塊

import pythoncom  # 導(dǎo)入封裝了OLE自動化API的模塊,該模塊為pywin32的子模塊


'''獲取指定目錄下的文件
   filepath:要遍歷的目錄
   filelist_out:輸出文件列表
   file_ext:文件的擴展名,默認為任何類型的文件
'''
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()  # 對路徑進行排序
    return filelist_out  # 返回文件完整路徑列表

# Word轉(zhuǎn)換為PDF(多個文件)
def wordtopdf(filelist,targetpath):
    totalPages = 0   # 記錄總頁碼
    valueList = []
    try:
        pythoncom.CoInitialize()   # 調(diào)用線程初始化COM庫,解決調(diào)用Word 2007時出現(xiàn)“尚未調(diào)用CoInitialize”錯誤的問題
        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)  # 分割文件名和擴展名
            os.chdir(filepath)  
            doc = os.path.abspath(filename)
            os.chdir(targetpath)
            pdfname = softfilename[0] + ".pdf"
            output = os.path.abspath(pdfname)
            pdf_name = output

            # 文檔路徑需要為絕對路徑,因為Word啟動后當(dāng)前路徑不是調(diào)用腳本時的當(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): # 判斷文件是否存在
                # 獲取頁碼
                pages = getPdfPageNum(pdf_name)   # 獲取頁碼
                valueList.append([fullfilename,str(pages)])
                totalPages += pages  # 累加頁碼
                # os.remove(pdf_name)  # 刪除生成的PDF文件
            else:
                print('轉(zhuǎn)換失敗!')
                return False
        w.Quit(constants.wdDoNotSaveChanges) # 退出Word應(yīng)用程序
        return totalPages,valueList  # 返回總頁碼和每個文檔的頁碼
    except TypeError as e:
        print('出錯了!')
        print(e)
        return False
'''
功能:統(tǒng)計文檔頁碼
path:文件絕對路徑
'''
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)  # 實現(xiàn)將Word文檔批量轉(zhuǎn)換為PDF
    resultList = valueList[1]  # 獲取統(tǒng)計結(jié)果
    if valueList:
        for i in resultList:
            print(i[0],i[1])
        totalPages = str(valueList[0]) # 總頁數(shù)
        print("合計頁數(shù):",totalPages)
    else:
        print("沒有要統(tǒng)計的文件或者統(tǒng)計失?。?)

以上就是Python實現(xiàn)批量word文檔轉(zhuǎn)pdf并統(tǒng)計其頁碼的詳細內(nèi)容,更多關(guān)于Python word轉(zhuǎn)pdf的資料請關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • python collections模塊示例詳解

    python collections模塊示例詳解

    Python的collections模塊是其標(biāo)準(zhǔn)庫中的一部分,包含了一些擴展內(nèi)置數(shù)據(jù)類型的有用數(shù)據(jù)結(jié)構(gòu),如OrderedDict、defaultdict、Counter、deque和namedtuple等,這些數(shù)據(jù)結(jié)構(gòu)在不同場景下都非常有用,能提供更高效的數(shù)據(jù)操作和方便的數(shù)據(jù)訪問方式,有助于提升代碼的性能和可讀性
    2024-10-10
  • Python3 JSON編碼解碼方法詳解

    Python3 JSON編碼解碼方法詳解

    這篇文章主要介紹了Python3 JSON編碼解碼方法詳解,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下
    2019-09-09
  • 基于Python的接口測試框架實例

    基于Python的接口測試框架實例

    下面小編就為大家?guī)硪黄赑ython的接口測試框架實例。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2016-11-11
  • Python輸出\u編碼將其轉(zhuǎn)換成中文的實例

    Python輸出\u編碼將其轉(zhuǎn)換成中文的實例

    今天小編就為大家分享一篇Python輸出\u編碼將其轉(zhuǎn)換成中文的實例,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2018-12-12
  • python開發(fā)之函數(shù)定義實例分析

    python開發(fā)之函數(shù)定義實例分析

    這篇文章主要介紹了python開發(fā)之函數(shù)定義方法,以實例形式較為詳細的分析了Python中函數(shù)的定義與使用技巧,需要的朋友可以參考下
    2015-11-11
  • Django 生成登陸驗證碼代碼分享

    Django 生成登陸驗證碼代碼分享

    這篇文章主要介紹了Django 生成登陸驗證碼代碼分享,具有一定參考價值,需要的朋友可以了解下。
    2017-12-12
  • 使用python實現(xiàn)個性化詞云的方法

    使用python實現(xiàn)個性化詞云的方法

    最近看到可視化的詞云,看到網(wǎng)上也很多這樣的工具,但是都不怎么完美,有些不支持中文,有的中文詞頻統(tǒng)計得莫名其妙、有的不支持自定義形狀、所有的都不能自定義顏色,于是網(wǎng)上找了一下,決定用python繪制詞云
    2017-06-06
  • Python3導(dǎo)入CSV文件的實例(跟Python2有些許的不同)

    Python3導(dǎo)入CSV文件的實例(跟Python2有些許的不同)

    今天小編就為大家分享一篇Python3導(dǎo)入CSV文件的實例(跟Python2有些許的不同),具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2018-06-06
  • 詳解Python中的文件操作

    詳解Python中的文件操作

    這篇文章主要介紹了Python中文件操作的相關(guān)資料,幫助大家更好的理解和學(xué)習(xí)python,感興趣的朋友可以了解下
    2021-01-01
  • Python學(xué)習(xí)之字符串函數(shù)使用詳解

    Python學(xué)習(xí)之字符串函數(shù)使用詳解

    Python的友好在于提供了非常好強大的功能函數(shù)模塊,對于字符串的使用,同樣提供許多簡單便捷的字符串函數(shù)。Python 字符串自帶了很多有用的函數(shù),快來跟隨小編學(xué)習(xí)一下這些函數(shù)的應(yīng)用詳解吧
    2021-12-12

最新評論