若要一次從多個 PDF 檔案擷取頁面,請以「一個檔案接著一個檔案」的方式執行同一個瀏覽器工作流程,並搭配 擷取 PDF 頁面 — 位元組皆在本機讀取且從不上傳,因此無論處理十份、五十份或一百份來源,整個工作仍會完全保留在你的裝置上。此工具接受單一 PDF,檔案大小上限為 50 MiB,頁數上限為 500 頁,可讓你以精確的輸出順序命名頁面或範圍,以確定性的方式移除重複的選取,並提供一個全新的可下載檔案。由於每個工作僅接受單一來源,實務上所謂的「一次處理多個檔案」其實是一個嚴謹的逐檔迴圈,而非批次上傳:選擇一個檔案、輸入選取範圍、下載結果,再處理下一個 PDF。這種重複操作,是在保留「不上傳、確定性輸出」優勢的前提下,誠實處理多份來源的唯一方式。以下內容將說明如何讓這個迴圈保持快速、如何正確解讀頁面表示式,以及當頁面物件被複製到新文件時,哪些 PDF 特性會保留下來。

在瀏覽器工作流程中,「一次處理多個檔案」實際上代表什麼
真正的批次擷取工具應可接受整個 PDF 資料夾、對每個檔案執行相同的頁面表示式,並在單次點擊下為每個來源產出對應的輸出檔。「擷取 PDF 頁面」是圍繞更嚴格的保證所打造 — 本機處理、不上傳、確定性的位元組處理 — 因此其形態為單一檔案工作。作為交換,處理多份 PDF 的過程,會變成對每個來源重複執行相同的三個步驟:選擇一個 PDF、輸入頁面表示式、下載新檔案。
這種模式在人們實際執行的工作上表現得相當穩健。從三份報告中抽出第二章與第五章,會變成對該頁面進行三次造訪,每次使用像 2, 5 這樣的頁面表示式。從一整疊學術文章中收割書目與附錄,方法也是如此。工作量會隨檔案數量線性成長,但每個檔案的成本很低,除非你想清除選取範圍,否則不需要重新整理分頁,且整個管線都維持在裝置上 — 當 PDF 內容包含草稿、客戶工作或內部備忘錄時,這正是大多數使用者真正在意的一點。
如果你確實希望在執行完這個迴圈後,將擷取出的輸出再次合併為單一 PDF,這些擷取檔案本身已具備 合併 PDF 所需的正確格式,後者可以依你指定的順序,將多份本機 PDF 合併成一份。
頁面選取語法與排序規則
頁面表示式欄位是大多數初次使用者最容易卡住的地方。代幣(token)之間以逗號或空白分隔,每個代幣要嘛是單一以 1 為起點的頁碼,要嘛是以「起始-結束」形式撰寫的遞增連續範圍,而工具會由左至右處理代幣,以決定輸出順序。頁碼會對應到一般 PDF 檢視器在頁面上顯示的內容,而非以 0 為起點的計數。
以下為剖析器實際接受的具體模式,以及各自的解析方式:
| 表示式 | 意義 | 備註 |
|---|---|---|
| 5 | 僅第 5 頁。 | 單一代幣,單一輸出頁面。 |
| 1, 3, 7 | 依序為第 1、3、7 頁。 | 以逗號或空白分隔的單一頁碼。 |
| 1-3 | 第 1、2、3 頁。 | 遞增的連續範圍。 |
| 3-1 | 拒絕。 | 遞減範圍不會被默默反轉。 |
| 5, 2-3 | 第 5 頁,接著第 2 頁,再來第 3 頁。 | 代幣順序決定輸出順序。 |
| 3, 1-3 | 第 3 頁,接著第 1 頁,再來第 2 頁。 | 第二個出現的 3 會被捨棄。 |
| 1.5 | 拒絕。 | 不接受小數值。 |
| -2 | 拒絕。 | 不接受負值。 |
| 1, 999 | 拒絕。 | 超出已載入文件的頁碼會直接報錯。 |
重複處理規則是最容易在不知情的情況下掉頁的地方。第一個出現的會勝出,後續出現的會被捨棄,且結果會回報哪些頁碼已被去重。對於一份 10 頁的來源,表示式 1, 3-5, 5, 8, 9-10 會展開為:第 1 頁、第 3 頁、第 4 頁、第 5 頁、第 8 頁、第 9 頁、第 10 頁 — 依此順序共 7 個唯一輸出頁面,其中第二個 5 會被標示為重複。如果你確實需要在同一份輸出中重複同一頁,那是專門用於重新排序或複製的工作流程,而非擷取。
依序從多份 PDF 擷取頁面
針對你資料夾中的每份 PDF,請依序執行下列步驟。此工具每次都刻意保持一致,讓你在不同檔案間能運用相同的操作記憶。
- 開啟「擷取 PDF 頁面」並點擊檔案選擇器。選擇一份未加密的本機 PDF,檔案大小不得超過 50 MiB,且頁數不得超過 500 頁 — 超出此上限的檔案會被拒絕,而不會被縮減。
- 在選取欄位中輸入頁面表示式,使用以 1 為起點的頁碼與遞增的連續範圍,例如 5, 1-3。代幣順序決定輸出順序,而重複的頁面僅保留第一次出現的結果。
- 點擊「擷取」。瀏覽器會以與正式測試相同的嚴格剖析器解析表示式,透過 pdf-lib 將選取的唯一頁面物件複製到一個全新的 PDFDocument,並將結果以暫時的本機物件 URL 形式公開。
- 若出現「重複頁面」通知,請閱讀其內容、確認輸出頁數符合你預期的唯一頁數,然後點擊下載以儲存新檔案。
- 在你實際要使用的檢視器中開啟下載的 PDF,確認順序與外觀,測試任何必要的連結或欄位,並將原始來源檔保留作為對照基準。
- 選擇下一份來源檔案。當選擇新檔案時,頁面會重置,但你也可以調整表示式,並從同一份來源重新擷取以嘗試不同的選取 — 每次新執行都會取代先前的結果。
重複執行,是維持本機處理所必須付出的代價。對於一整疊頁面配置相似的報告,可以在每個檔案上重複使用同一個表示式而無需重新輸入,這已經是逐檔工作流程最接近真正批次處理的做法。
硬性限制:50 MiB 與 500 頁
此合約規範了兩個硬性的輸入上限,以及表示式本身的一個硬性輸入字元上限。剛好等於上限的檔案會被接受;超出上限的檔案則會以明確的錯誤訊息拒絕,而不會被截斷、重新壓縮或部分套用。
位元組上限為 50 MiB,相當於 52,428,800 位元組。頁數上限為 500 頁。兩項上限會獨立檢查,因此即使檔案大小遠低於上限,一份含有 600 頁的文件仍會在頁數上限這項被擋下。選取欄位本身的上限為 4,000 個字元,這在表示式包含大量小型範圍,而非單一大型範圍時最為關鍵。
輸出大小並非以相同方式加以限制。從一份影像密集的報告中複製一頁,仍可能一併帶入該頁所需的字型與影像串流,因此最終檔案可能比以頁數單純推算的大小來得大。如果輸出檔案相對於你所選取的頁數顯得異常龐大,該結果仍然有效;請以較小的選取範圍重新執行工作,以釐清是哪一頁貢獻了最多的權重。
擷取後會保留下來與不會保留下來的內容
每個選取的頁面會以「頁面物件」的形式複製,這表示存在於單一頁面內部的所有項目都會完整保留下來:繪製的圖形、該頁的普通頁面資源(如字型與嵌入影像)、90 度旋轉旗標,以及裁切或媒體邊界方框的尺寸。擷取過程不會將頁面光柵化為螢幕截圖,因此向量內容會保持向量,且相較於逐頁匯出為影像,檔案體積也會較小。我們的建置管線執行了一項真正的整合測試:建構具有不同尺寸與識別碼的來源頁面、將其送交正式擷取器、儲存結果、重新開啟、並驗證頁數、輸出順序、尺寸與頁面識別 — 藉此抓出「頁數正確但頁面錯誤或順序遭到排序」這類錯誤。
不會保留下來的,則是任何仰賴整份文件關聯性的項目。跨頁連結、文件大綱、書籤、頁面標籤、分層內容、作為整體的嵌入檔案、腳本、參照所選頁面以外共享資源的 AcroForm 欄位,以及跨頁目的地,皆可能參照到未被複製的物件。數位簽章無法針對新 PDF 進行驗證,因此即使來源檔帶有有效的簽章,也請勿將擷取後的檔案視為已簽署。pdf-lib 並不支援將動態 XFA 表單列為保留目標;而對於密碼保護的檔案,絕不會以繞過加密的方式開啟 — 加密檔案不會以繞過加密的方式開啟,損壞或不受支援的檔案則會直接載入失敗。
在依賴輸出檔之前,請於你的目標檢視器中將其開啟,並確認你所需的連結、表格欄位或簽章。請保留原始來源檔。若你的工作流程仰賴簽章、XFA、無障礙結構、組合式文件、附件或受法規規範的歸檔相容性的留存,請使用專業的 PDF 編輯器,而非擷取工具。
擷取之後:合併、重新排序或修剪輸出檔
當你資料夾中的每份 PDF 都已產出對應的擷取檔案後,自然的下一步就是將這些逐檔結果整合為單一交付物。「合併 PDF」可以依你指定的順序將這些本機輸出合併為單一 PDF,同樣全程在瀏覽器中完成。如果某份擷取檔案最終含有你不需要的多餘頁面,「修剪頁面」工作流程可讓你丟棄指定的頁面,並在本機下載該檔案剩餘的內容,而無需重建其他任何部分,同樣全程在瀏覽器中完成。
在所有這些後續工具中,「不上傳、無註冊、確定性輸出」的模式皆維持一致,因此這個逐檔擷取迴圈可以乾淨地組合成為更大的本機管線。整體的心智模型始終如一:每個工具接受一份或多份本機 PDF,套用一條嚴謹的規則,並交回一份全新的本機檔案。將這個模式在許多來源上重複執行,就是在注重隱私的瀏覽器工作流程中實現「一次處理多個檔案」的方式。