<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          批量Word轉(zhuǎn)PDF方法

          共 2721字,需瀏覽 6分鐘

           ·

          2020-08-08 01:07

          手上有近百個(gè) Word 文檔需要轉(zhuǎn)為 PDF, 怎么辦?

          難道要一個(gè)一個(gè)的導(dǎo)出嗎?

          確實(shí),Office2010 以后版本的 Word 可以直接導(dǎo)出 PDF,是時(shí)候讓 Python 來(lái)替我們干這個(gè)重復(fù)性的活了!

          直接上代碼:

          from win32com.client import Dispatch,constants,gencache
          import time
          import os
          path = os.getcwd()
          start_time = time.time()
          files = os.listdir(path)
          gencache.EnsureModule('{00020905-0000-0000-C000-000000000046}',0,8,4)
          wd = Dispatch('Word.Application')
          for file in files:
          if file.split('.')[-1] in ['docx','doc']:
          word_path = path + '\\'+ file
          file_list = (file.split('.')[-2::-1])[::-1]
          pdf_file = "".join(file_list)
          pdf_path = path + '\\'+ pdf_file + '.pdf'
          print('正在轉(zhuǎn)換:')
          print('《{}》'.format(file))
          doc = wd.Documents.Open(word_path,ReadOnly=1)
          doc.ExportAsFixedFormat(pdf_path,constants.wdExportFormatPDF,Item=constants.wdExportDocumentWithMarkup,CreateBookmarks=constants.wdExportCreateHeadingBookmarks)
          print('上述文件轉(zhuǎn)換完成!')
          print('')
          wd.Quit(constants.wdDoNotSaveChanges)
          end_time = time.time()
          print("該文件夾下的Word文件已轉(zhuǎn)為PDF,用時(shí):{:.2f}秒!".format(z,end_time-start_time))
          time.sleep(5)

          代碼解釋

          這個(gè)程序可以操作任意文件夾,不受文件夾所在位置的影響。

          只需要將它丟在需要轉(zhuǎn)換的 Word 文件文件夾里,它就可以讀取出所在文件夾下所有的 Word 文件,并進(jìn)行轉(zhuǎn)換。

          主要用到了下面幾個(gè)方法:

          1、獲取任意文件夾下文件名稱

          import os
          path = os.getcwd()
          files = os.listdir(path)
          • os.getcwd() :獲取程序所在文件的路徑,結(jié)果存入 path 中;
          • os.listdir():獲取 path 路徑下的所有文件名稱,結(jié)果存入 files 中。

          2、篩選出 Word 文件

          for file in files:
          if file.split('.')[-1] in ['docx','doc']:

          使用字符串的split函數(shù),用.號(hào)將文件名稱分割。

          file.split('.')[-1]:將 Word 文件的名稱以.號(hào)分割,形成一個(gè)列表,取出這個(gè)列表的最后一項(xiàng)(即 Word 文件后綴名稱),判斷其是不是docxdoc,如果是,則說(shuō)明是 Word 文件,則生成兩個(gè)路徑:

          3、計(jì)算出 Word、PDF 的路徑

          word_path = path + '\\'+ file
          file_list = (file.split('.')[-2::-1])[::-1]
          pdf_file = "".join(file_list)
          pdf_path = path + '\\'+ pdf_file + '.pdf'
          • word_path:Word 文件路徑,用來(lái)告訴程序打開(kāi)哪一個(gè) Word 文件;
          • pdf_path:PDF 文件路徑,用來(lái)告訴程序,轉(zhuǎn)換后的 PDF 文件名稱和存儲(chǔ)路徑。

          在計(jì)算 PDF 文件路徑時(shí),需要先去掉 Word 文件的后綴:docxdoc,再加上.pdf

          有時(shí)候,Word 文件的名稱中可能含有多個(gè).號(hào),因?yàn)槲覀兪峭ㄟ^(guò).號(hào)將 Word 文件名稱分割的,這樣可能會(huì)導(dǎo)致計(jì)算的 PDF 文件名稱和 Word 文件名稱不同。

          因此,為了避免出現(xiàn)這種樣的錯(cuò)誤,我們進(jìn)行以下操作:

          1. (file.split('.')[-2::-1]):按照逆序,取出除了后綴名稱外的內(nèi)容。
          2. (file.split('.')[-2::-1])[::-1]:轉(zhuǎn)為正序,即正常的文件名稱。
          3. pdf_file = "".join(file_list):將列表拼接成一個(gè)字符串。
          4. pdf_path = path + '\\'+ pdf_file + '.pdf':最后給文件名稱加上.pdf的后綴。

          這樣就完成了 Word、PDF 的路徑計(jì)算。

          4、調(diào)用 Word 功能

          下面這些代碼的功能是調(diào)用 Word 程序:

          gencache.EnsureModule('{00020905-0000-0000-C000-000000000046}',0,8,4)
          # 這是指向注冊(cè)表的鍵,我們要調(diào)用它。

          wd = Dispatch('Word.Application')
          #啟用 Word

          doc = wd.Documents.Open(word_path,ReadOnly=1)
          # 只讀方式打開(kāi) Word 文檔

          wd.Quit(constants.wdDoNotSaveChanges)
          # 關(guān)閉 Word

          關(guān)鍵操作就是下面這行代碼,它定義了按特定格式導(dǎo)出的參數(shù),模擬人工操作。

          doc.ExportAsFixedFormat(pdf_path,constants.wdExportFormatPDF,Item=constants.wdExportDocumentWithMarkup,CreateBookmarks=constants.wdExportCreateHeadingBookmarks)

          以上就是這期分享的全部?jī)?nèi)容了

          瀏覽 32
          點(diǎn)贊
          評(píng)論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          評(píng)論
          圖片
          表情
          推薦
          點(diǎn)贊
          評(píng)論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  亚洲日韩毛片 | 狠狠色综合网站 | 五月了香在线伊人 | www.夜夜操 | 日韩免费成人电影 |