簡體   English   中英

使用pdftk自動合並PDF

[英]Merging PDFs automatically with pdftk

我有以下情況:

我有5個不同的文件夾包含PDF文件。

文件夾1包含一個PDF - 首頁,例如Front Page.pdf
這應該是每個新生成的PDF文件的首頁。

文件夾2包含不同的命名PDF文件,每個文件以1_ FileName開頭,例如1_abcd_123.pdf1_ghi_675.pdf 字符數不一樣,唯一常見的是它們都以1_開頭。
這應該是第2頁。

文件夾3包含與文件夾2相同數量的PDF文件。 PDF文件的名稱與文件夾2完全相同,但它們以2_開頭。

文件夾4包含相同數量的PDF文件,如文件夾2文件夾3 PDF文件的名稱與文件 夾2文件夾3完全相同,但它們都以3_開頭。

文件夾5包含一個PDF,例如LastPage.pdf
這應該是每個生成的PDF中的最后一頁。

現在我想將首頁和文件夾2,3,4和最后一頁中的3個匹配的PDF文件合並為一個PDF。

我開始在網上進行研究,發現這應該是在批處理過程中使用像pdftk這樣的PDF合並來完成的。

此示例FOR循環組中的每個迭代在一行中具有相同前綴的問題接近我的。 但不同之處在於我有不同的文件夾,並且進程應該在名稱的末尾而不是在開頭查找匹配的數據。

有人可以幫忙嗎?

我根本沒有這個領域的經驗,但我盡力盡力進入這個話題。

下面的演示批處理代碼演示了如何操作

  • 為文件夾2中找到的每個文件運行一個命令/可執行文件/腳本,文件名,文件擴展名和完整路徑,沒有分配給循環變量#雙引號,
  • 將沒有路徑的找到文件的名稱 - %%~nx# (文件名和文件擴展名)分成兩部分,因為tokens=1*基於第一個下划線,因為delims=_在文件名中
    • 第一部分總是只有1被分配給循環變量I ,它沒有被進一步使用
    • 在第一個下划線分配給循環變量J之后的所有內容,這是I在ASCII表格中的下一個字符
  • 處理具有6個完整文件名的命令,其中最后一個完整文件名是從其他5個文件名生成的新文件。

演示代碼:

@echo off
set "SourceFolder=C:\Temp"
for %%# in ("%SourceFolder%\Folder 2\*") do (
    for /F "tokens=1* delims=_" %%I in ("%%~nx#") do (
        echo "%SourceFolder%\Folder 1\Front Page.pdf" "%%#" "%SourceFolder%\Folder 3\2_%%J" "%SourceFolder%\Folder 4\3_%%J" "%SourceFolder%\Folder 5\LastPage.pdf" "%SourceFolder%\%%J"
    )
)
set "SourceFolder="

C:\\Temp文件夾2中兩個文件1_abcd_123.pdf1_ghi_675.pdf的輸出為:

"C:\Temp\Folder 1\Front Page.pdf" "C:\Temp\Folder 2\1_abcd_123.pdf" "C:\Temp\Folder 3\2_abcd_123.pdf" "C:\Temp\Folder 4\3_abcd_123.pdf" "C:\Temp\Folder 5\LastPage.pdf" "C:\Temp\abcd_123.pdf"
"C:\Temp\Folder 1\Front Page.pdf" "C:\Temp\Folder 2\1_ghi_675.pdf" "C:\Temp\Folder 3\2_ghi_675.pdf" "C:\Temp\Folder 4\3_ghi_675.pdf" "C:\Temp\Folder 5\LastPage.pdf" "C:\Temp\ghi_675.pdf"

我沒有下載,安裝和閱讀文檔的PDFTK 因此,最終需要的是代替命令ECHO將5個輸入PDF文件合並到一個新的輸出PDF文件中,必須由您自己找到。

要了解使用的命令及其工作方式,請打開命令提示符窗口,執行以下命令,並完全閱讀為每個命令顯示的所有幫助頁面。

  • echo /?
  • for /?
  • set /?

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM