標籤

bat (52) 作品 (38) python (21) shell (17) windows (11) 虛擬機 (11) php (10) CPP (6) KMS (6) 程式設計 (6) docker (5) 使用教學 (5) xoops (4) 公文 (4) Apache2 (3) Excel (3) juniper (3) 資料庫 (3) mysql (2) 免動手 (2) 資料結構 (2) 軟體廣播 (2) 電腦維修 (2) Android Studio (1) Apple IPAD管理 (1) Arduino (1) CSS (1) LAMP (1) NAS (1) Ubuntu (1) VHD (1) Windows Server (1) 原因 (1) 程式應用 (1) 程式積木 (1) 編輯器 (1) 雲端硬碟 (1)

2022年6月22日 星期三

python 只要點兩下,分別對各資料夾內的pdf合併,合併後的檔名要讓人知道來自哪個資料夾

系列文章:
        同事試用我的pdf合併程式後,覺得還不錯。但是緊接著說可不可以分別對各資料夾內的pdf合併,合併後的檔名要讓人知道來自哪個資料夾。我聽不太懂他的意思。請他說明他到底要做什麼?於是他說他掃描資料,經常要以資料夾做分類,每個資料夾內有各自的pdf。每次他掃描完後,還要用眼睛去看這些掃描檔,然後分類到每個資料夾。分類完後,還要一一對每個資料夾的pdf 合併。他現在想要的是,如果他將pdf 分類到不同的資料夾後,可不可以只要點兩下,那些各自資料夾的pdf合併,合併後的pdf 檔名可以讓他知道來自哪個資料夾。
        我聽懂他的意思,我開始將他的意思變更為:
如果Input資料夾內有01、02、03三個資料夾。
而資料夾01有兩個pdf,分別是011.pdf、012.pdf。                                  -->合併為01merge.pdf
而資料夾02有三個pdf,分別是021.pdf、022.pdf、023.pdf。                  -->合併為02merge.pdf
而資料夾03有四個pdf,分別是031.pdf、032.pdf、033.pdf、034.pdf。 -->合併為03merge.pdf
        我整理了他的需求:
         1.一個資料夾:這個資料夾可以讓他帶走
         2.資料夾內只有一個程式,對這個程式點兩下,合併的pdf就會出現
         3.資料夾內有個資料夾,其名稱叫Input,那他就會知道將很多的內含pdf的資料夾放進去
         4.不管放幾個內含pdf的資料夾 ,最後要能合併
         5.合併後的pdf 檔名要讓人看出,來自哪個資料夾
        換句話說,這個資料夾內有一個資料夾Input 與一個 exe (或者bat,讓他點兩下),然後就有各自資料夾名稱的合併pdf檔案。

        最後完成程式:
                                          下載檔案。解壓密碼:demo1234
教學影片:


        以下是程式原始碼的內容:
程式名稱:FolderPdfMerge.py
程式內容:
import os
from PyPDF2 import PdfFileMerger
pdf_dict = dict()
pdf_lst = list()
folder_lst = list()

# 設定Input為目標路徑
target_path=str(os.path.abspath(os.getcwd()))+'\\Input\\'
#output_path=str(os.path.abspath(os.getcwd()))+'\\Output\\'

#取得Input內各資料夾檔名
for f in os.listdir(target_path):
    if os.path.isdir(target_path+f):
        folder_lst.append(f)
    elif os.path.isfile(target_path+f):
        print("ERROR! There exist files")
        os.system("PAUSE")

#取得各資料夾檔名與資料夾內的各pdf檔名    
for path in folder_lst:
    for pdf in os.listdir(target_path+path):
        if pdf.endswith('.pdf'):
            pdf_lst.append(target_path+path+"\\"+pdf)
        pdf_dict[path] = pdf_lst
    pdf_lst = list()

# 依照各資料夾內pdf合併
#file_merger = PdfFileMerger()
for folder in folder_lst:
    file_merger = PdfFileMerger()
    for pdf in pdf_dict[folder]:
        file_merger.append(pdf)
    file_merger.write(str(folder)+"merge.pdf")    
    #file_merger.write(output_path+str(folder)+"merge.pdf")


沒有留言:

張貼留言

只要點兩下,傳統右鍵選單改回Win11右鍵選單

系列文章: 1. 只要點兩下,就能將Win11 右鍵選單 回復 傳統右鍵選單 2. 只要點兩下,傳統右鍵選單改回Win11右鍵選單 上一篇提到只要點兩下,就能將Win11選單回到傳統選單。但是有沒有方法能夠回到Win11選單呢?                    ...