**多個word 文檔 轉化成 PDF 文件, 最後合併成一個PDF文件** ``` import os from win32com import client from PyPDF2 import PdfMerger # 使用PdfMerger def wordToPdf(folder): # ...
多個word 文檔 轉化成 PDF 文件, 最後合併成一個PDF文件
import os
from win32com import client
from PyPDF2 import PdfMerger # 使用PdfMerger
def wordToPdf(folder): # 將 多個word 文檔 轉化成 PDF 文件
os.chdir(folder)
file_type = 'docx'
out_folder = folder + "\\PDF"
if not os.path.exists(out_folder):
print('Creating output folder...')
os.makedirs(out_folder)
print(out_folder, 'created.')
else:
print(out_folder, 'already exists.\n')
# print(os.listdir("."))
# exit()
try:
for files in os.listdir("."):
if files.endswith(".docx"):
out_name = files.replace(file_type, r"pdf")
in_file = os.path.abspath(folder + "\\" + files)
out_file = os.path.abspath(out_folder + "\\" + out_name)
print(in_file, 'Exporting', out_file, "\n\n")
word = client.DispatchEx("Word.Application")
word.Visible = 0 # 後臺運行
word.DisplayAlerts = 0 # 不顯示,不警告
doc = word.Documents.Open(in_file, Encoding='gbk')
doc.SaveAs(out_file, FileFormat=17)
doc.Close()
word.Quit()
except Exception as e:
print("出錯了!", e)
def mergePDF(folder): # 將多個 PDF 文件,合併成一個PDF文件
# 設置文件所在位置
target_path = folder + "\\PDF" # pdf文件所在文件夾絕對路徑
pdf_lst = [f for f in os.listdir(target_path) if f.endswith('.pdf')]
pdf_lst = [os.path.join(target_path, filename) for filename in pdf_lst]
os.chdir(target_path)
out_folder = target_path + "\\MPDF"
if not os.path.exists(out_folder):
print('Creating output folder...')
os.makedirs(out_folder)
print(out_folder, 'created.')
else:
print(out_folder, 'already exists.\n')
# 調用合併方法
file_merger = PdfMerger() # 調用
for pdf in pdf_lst:
file_merger.append(pdf) # 合併pdf文件
# 選擇合併後文件存儲位置
out_name = "MergePDF.pdf"
out_file = os.path.abspath(out_folder + "\\" + out_name)
file_merger.write(out_file) # 合併後文件所在位置
print("合併完成")
if __name__ == '__main__':
folder = r"J:\1_7"
wordToPdf(folder)
mergePDF(folder)