import os
from pikepdf import Pdf
# 取得目前的工作目錄
current_directory = os.getcwd()
# 取得目前的工作目錄內input資料夾的路徑
current_directory_input = current_directory + "\\input\\"
# 取得工作目錄input資料夾內所有檔案名稱
current_directory_input_files = os.listdir(current_directory_input)
# 檢查 OutputFileName.txt 是否存在
if os.path.exists(current_directory + "\\OutputFileName.txt"):
# 如果存在,則讀取檔案內容
with open("OutputFileName.txt", "r", encoding="utf-8") as file:
content = file.readlines()
else:
# 如果不存在,則創建 OutputFileName.txt 並寫入內容
with open("OutputFileName.txt", "w", encoding="utf-8") as file:
for current_directory_input_file in current_directory_input_files:
# 開啟每個 PDF 檔案
pdf = Pdf.open(current_directory_input + current_directory_input_file)
pages = pdf.pages # 獲取 PDF 檔案的頁面數量
# 寫入檔案名稱和頁面數量到 OutputFileName.txt
file.write("FileName:" + str(current_directory_input_file) + "\nTotalPages:" + str(len(pages)) + "\n" + "StartPage:\nEndPage:\n")
num = 0 # 計數器
FileNameList = [] # 存放檔案名稱的列表
StartPageList = [] # 存放起始頁面的列表
EndPageList = [] # 存放結束頁面的列表
# 解析 OutputFileName.txt 的內容
for i in content:
if num % 4 == 0:
# 每四行的第一行是檔案名稱
temp, tempfilename = i.split(':')
FileNameList.append(tempfilename.replace("\n", ""))
elif num % 4 == 2:
# 每四行的第三行是起始頁面
temp, tempstartpage = i.split(':')
StartPageList.append(tempstartpage.replace("\n", ""))
elif num % 4 == 3:
# 每四行的第四行是結束頁面
temp, tempendpage = i.split(':')
EndPageList.append(tempendpage.replace("\n", ""))
num = num + 1 # 增加計數器
# 將設定檔 OutputFileName.txt 的內容依序將指定 PDF 拆分合併到 output.pdf
output = Pdf.new() # 創建一個新的 PDF 檔案
for i in range(len(FileNameList)):
# 開啟每個指定的 PDF 檔案
pdf = Pdf.open(current_directory_input + FileNameList[i])
pages = pdf.pages # 獲取 PDF 檔案的頁面
a = int(StartPageList[i]) # 轉換起始頁面為整數
b = int(EndPageList[i]) # 轉換結束頁面為整數
# 從起始頁面到結束頁面將頁面添加到新的 PDF 檔案中
for j in range(a, b + 1):
output.pages.append(pages[j])
# 儲存合併後的 PDF 檔案
output.save("output.pdf")