2022年6月22日 星期三

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

系列文章:
3. 只要點兩下,就能將一堆的Doc與Docx 轉成 PDF
3.https://skjhcreator.blogspot.com/2023/05/docdocx-pdf.html
4.https://skjhcreator.blogspot.com/2023/06/jpgpdfjpgpdf.html
5.只要點兩下,就能將放進input的一堆PDF轉成各自的WORD
5.https://skjhcreator.blogspot.com/2023/10/inputpdfword.html
6.只要點兩下,就能將放進input的一堆PDF轉成在ouput資料夾內的各自的WORD 
6.https://skjhcreator.blogspot.com/2023/10/inputpdfouputword.html

7.只要點兩下,就能夠將InputAndOutput資料夾底下的子子孫孫資料夾內所有Word通通轉成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")


沒有留言:

張貼留言

只要點兩下,就可以將資料夾input內的所有Word通通轉成一個PDF

系列文章: 1. python 不管何時何地,只要點兩下,資料夾內的所有pdf都會合併成一個pdf https://skjhcreator.blogspot.com/2022/06/pythonpdfpdf.html 2. python 只要點兩下,分別對各資料夾內的pdf合併,...