從 PDF 離線擷取頁面是完全可行的,因為整個擷取流程都在您的瀏覽器分頁中執行,使用的是一個永遠不會將檔案上傳到伺服器的工具。使用 Extract PDF Pages 時,瀏覽器會讀取原始 PDF 的位元組,pdf-lib 會將所要求的頁面物件複製到一份新的文件,結果會以一個暫時的本機 Object URL 公開,您自行儲存即可。由於沒有任何資料被上傳,整個工作流程就像桌面工具一樣:開啟頁面、選擇檔案、輸入您要的頁面、下載新的 PDF。這個工具接受未加密、檔案大小上限 50 MiB(52,428,800 位元組)且頁數不超過 500 頁的 PDF,強制使用以 1 為起算的頁碼並接受遞增包含範圍,對格式錯誤的輸入會明確回報錯誤而不是猜測結果。頁面表示式中的 token 順序會成為輸出順序,因此 5, 1-3 會產生一份以原始第 5 頁開頭,接著是第 1、2、3 頁的 PDF。重複選取的處理遵循刻意設計的「首次出現」規則:第二次提到的頁面會被忽略並回報,因此不慎造成的重疊不會讓結果悄悄膨脹。

extract pages from pdf offline
在不上傳檔案的情況下離線擷取 PDF 頁面

「離線」對 PDF 頁面擷取器來說代表什麼

對 PDF 頁面擷取器而言,離線代表您來源檔案的位元組全程都保留在您的機器上,只有瀏覽器分會接觸到它們。Extract PDF Pages 在瀏覽器中驗證檔案的 MIME 類型或副檔名以及 50 MiB 的位元組上限,接著把位元組交給 pdf-lib,由它在不忽略加密(ignoreEncryption)的情況下載入來源。解析頁面表示式、把要求的頁面物件複製到全新的 PDFDocument、儲存它,並透過一個暫時的本機 Object URL 公開新的位元組,全部都發生在同一個分頁中。來源檔案、頁面表示式以及產生的 PDF 都不會被上傳到 Lizely。

當文件包含任何您不會與伺服器分享的內容時,這件事就格外重要:草稿、客戶名單、內部備忘錄、掃描的身分證件、已簽署的合約,或任何受保密協議約束的資料。頁面提供的本機來源連結同樣是在瀏覽器中產生,因此它從不離開這個分頁。來源與結果的暫時 URL 會在它們被取代或分頁關閉時釋出,這限制了這兩個 blob 在分頁內可被存取的時間長度。

瀏覽器內擷取器強制執行的檔案限制

這個離線擷取器強制執行兩項明確的本機處理限制,剛好處於邊界的檔案會被接受,超過的部分則會被拒絕而非截斷。事先了解這些限制可以避免在過大的來源上浪費嘗試。

限制精確數值在邊界處會發生什麼
檔案大小50 MiB(52,428,800 位元組)接受;超出 1 個位元組即拒絕
頁數1 至 500 頁端點接受;0 或 501 以上拒絕
頁面表示式長度最多 4,000 個字元接受;超過長度會被拒絕而非截斷
加密僅接受未加密加密檔案無法載入;不會繞過密碼

這個位元組上限是乾淨的單位換算,並非取整的行銷數字。逐步推算:50 MiB × 1024 KiB/MiB = 51,200 KiB,再以 51,200 KiB × 1024 B/KiB = 52,428,800 位元組。這就是瀏覽器強制執行的精確數字。解碼後文件的 500 頁邊界是獨立的,因此一份 49 MiB、800 頁的檔案會因為頁數超過限制而被拒絕,而非因為大小。

輸出檔案仍可能很大,因為所選頁面的資源(例如字型和圖片)可能會與頁面內容一起被複製。檔案大小並不會與頁數成正比地縮放:從一份資源密集的文件中擷取單一頁面,可能仍須保留該頁所需的資料。瀏覽器記憶體也會依裝置與分頁負載而有所不同,因此開啟其他分頁會影響擷取作業可用的餘裕。

頁碼語法:解析器接受與拒絕的內容

頁面表示式是由與正式程式碼路徑相同的嚴格例行程式解析,因此欄位接受的內容正是擷取器接受的內容。Token 之間以逗號或任何空白分隔,每個 token 要麼是從 1 開始計數的整數,要麼是以 start-end 撰寫的遞增包含範圍,而 token 的順序會成為輸出 PDF 中頁面的順序。

輸入結果
5一頁:原始第 5 頁
1, 3, 8依此順序共三頁:1, 3, 8
1-3第 1、2、3 頁
5, 2-3第 5 頁,接著第 2 頁,再來第 3 頁
3, 1-3第 3、1、2 頁(重複的 3 會被忽略並回報)
5-3拒絕(遞減範圍)
2.5、-1、abc、999拒絕(小數、負數、格式錯誤、超出範圍)

頁碼從 1 開始,與 PDF 檢視器所顯示的常見標籤一致,因此您無須在心中減去 1。解析器保留 token 順序而非依數值排序,因此 5, 2-3 會以第 5 頁作為結果的第一頁。像 5-3 這樣的範圍會直接被拒絕,而不是被悄悄反轉,因為反向範圍幾乎一定是打錯字。選取欄位同樣上限為 4,000 個字元;超過長度的輸入不會被截斷或部分套用,因此過長的表示式會乾淨地失敗,而不會產生令人意外的局部結果。

離線從 PDF 擷取頁面的逐步作法

  1. 從本機磁碟選擇一份未加密、檔案大小不超過 50 MiB 且頁數不超過 500 頁的 PDF。
  2. 依您希望的輸出順序輸入從 1 開始計數的頁碼或遞增包含範圍,例如 5, 1-3。
  3. 執行擷取。瀏覽器會依解析後的 token 順序,把唯一選取的頁面複製到一份新的 PDF。
  4. 檢查任何重複頁面的提示;相同頁面第二次及其後的出現會刻意被忽略,並在結果中列出重複的頁碼。
  5. 從暫時的本機連結下載新的 PDF。原始檔案會保留在您的裝置上,且永遠不會被上傳。

由於每一步都在瀏覽器分頁中執行,唯一會產生的網路活動就是載入頁面本身。若您想再次確認輸出,可在您的目標檢視器中開啟下載的 PDF,確認選取順序與頁面呈現、測試您所依賴的任何連結或欄位,並將原始 PDF 與新檔案一同保存以便參考。

重複頁面、自訂順序,以及被複製的內容

擷取器在重複選取時遵循刻意設計的「首次出現」規則。若您輸入 3, 1-3,結果會依序包含第 3、1、2 頁,而報表會把第 3 頁標記為重複。這能避免不慎的重疊範圍悄悄加入重複的輸出頁面,同時保留每個頁面首次出現的確切順序。若您刻意需要在輸出中出現相同的頁面兩次,則需要一套專為此目的設計的 PDF 頁面重排或複製工作流程,因為本工具是圍繞唯一選取打造的。

當一個頁面被複製時,工具複製的是頁面物件本身,而不是把頁面點陣化為截圖。90 度旋轉、裁切框、媒體框、一般的頁面圖形,以及渲染該頁所需的資源,都會隨頁面物件一起帶走。輸出頁數等於所選的唯一頁數,而一項真正的整合測試會載入來源、透過正式的擷取函式擷取、儲存結果、重新開啟,並驗證頁數、輸出順序、尺寸與身分,因此一個雖然回傳正確頁數但複製到錯誤頁面的實作將無法通過這項測試。

哪些保留在本機、哪些會被釋出

讀取原始位元組、解析頁面表示式、複製所選的頁面物件、儲存新的 PDF、建立供比較的本機來源連結,以及準備下載,全部都在目前的瀏覽器中執行。來源檔案、頁面表示式與輸出都不會被上傳到 Lizely。更換頁面表示式會立即釋出先前的結果,再次執行擷取會取代先前的輸出 URL。選擇另一個檔案則會清除舊的位元組、選取項目、來源連結、結果與錯誤。工作與掛載狀態的守護機制會防止較舊的非同步載入或儲存覆蓋到較新的狀態,使可見的結果與最近一次的動作保持一致。

暫時的來源與結果 URL 會在被取代或分頁關閉時釋出,因此關閉分頁是清除分頁內狀態最乾淨的方式。若您使用的是共用電腦,這個釋出路徑也是您完成工作後關閉分頁最充分的理由。

離線瀏覽器擷取器不適用的情境

重要的 PDF 功能可能存在所選子集無法單獨保留的關聯。AcroForm 欄位、註解、指令碼、嵌入檔案、圖層、頁面標籤、書籤、文件大綱、跨頁目的地與連結,都可能依賴於您保留的頁面之外的物件,因此它們在擷取後的檔案中可能會失效。以原始檔案建構出來的不同 PDF,將無法維持數位簽章的有效性。受密碼保護或加密的檔案並不會透過繞過加密來開啟,損壞或不受支援的檔案也可能無法載入。動態 XFA 表單在 pdf-lib 中並非受支援的保留目標,因此 XFA 表單並不適合本離線工作流程。

若您的任務仰賴簽章、XFA、無障礙結構、組合文件、附件或受法規規範的歸檔遵循性,請使用支援這些功能的專業 PDF 編輯器。對於私人文件的一般頁面擷取,瀏覽器內的工具涵蓋了常見情境,且不會將檔案傳送到任何地方。pdf-lib PDFDocument API 記載了本工具所依賴的頁面複製基本操作。