1. 程式人生 > 其它 >自動化合並若干個word和pdf文件

自動化合並若干個word和pdf文件

技術標籤:日常工具windowspython

需求:將若干個 word文 檔和 pdf 文件按指定順序合併為一個 pdf 文件,並將該過程自動化。

1. 將word轉換為pdf。

使用工具 docto[github],該工具可免費下載與使用,執行如下命令將*.docx檔案轉換為同名的*.pdf檔案。

docto -F inputFileName -O "outputFileName" -T wdFormatPDF

如需自動化將指定路徑下的所有*.docx檔案轉化為pdf檔案,首先建立一個指令碼,2pdf.bat

@echo off

set filename=%~1

docto -F %filename% -O "%filename%.pdf" -T wdFormatPDF

然後建立一個python指令碼transform.py

import os

results = []
results += [each for each in os.listdir('..') if each.endswith('.docx')]

for i in range(0, len(results)):
    os.system("2pdf.bat " + results[i])
        

2. 將多個pdf檔案按指定順序合併為一個 pdf 檔案

使用工具 pdftk,該工具支援輸入多個 *.pdf 檔案、同時支援 GUI 互動和命令列互動。通過執行如下命令可合併兩個pdf檔案:

pdftk.exe name1.pdf name2.pdf output mreged.pdf

然後執行如下指令碼,將當前目錄下的所有 *.pdf 檔案合併為 merged.pdf 檔案。

results = []
results += [each for each in os.listdir('.') if each.endswith('.pdf')]

results.sort()

output_filename = "merged.pdf"

command_line = ""
merged_num = 0
for result in results:    
    command_line += "\"" + result + "\"" + " "
 
command_line += "output " + output_filename
os.system("pdftk.exe " + command_line)

這裡,可以通過將檔名加數字字首的方式,將待轉換、合併的文件統一命名,如下圖所示:

經過步驟

results.sort()

之後,列表即按遞增順序排列。

指令碼中對每個檔名加引號可處理包含空格的檔名。

3. 結論

以上兩個過程可對若干個文件進行自動化轉換與合併,程式碼僅供參考,可用的 pdf 工具也有很多,以描述思路為主。

另外,docto[github] 工具還支援將文件按指定頁碼輸出,可實現文件的制定範圍轉換、pdf 分割等功能。