PDF Link Extractor 是一款以瀏覽器為基礎的工具,可列出單一 PDF 內每個可點擊的連結註解,依照頁面與註解編號分組,並讓你複製結果或下載為 UTF-8 TXT 或已中和公式的 CSV——而要實際「一次從多個 PDF 檔案擷取連結」,最實用的方式就是對每份文件依序執行相同的單一檔案工作流程,因為檔案絕不會離開你的裝置、不需要帳戶,而且只要 PDF 格式正確且低於 25 MiB/40 頁的上限,每份文件從選擇、擷取、複製到下載的完整循環只需幾秒。每次執行都會產生各自的報告,因此之後若需要彙整多份 PDF 的綜合檢視,你可以將產生的檔案排序、比較差異,或在試算表中合併。本文會逐步說明這套重複執行的工作流程、解釋報告實際包含的內容,並釐清各項限制,讓多檔案作業不會因某份文件遭拒而停滯。

這項工具所說的「一次處理多個檔案」是什麼意思
這個關鍵片語聽起來像是批次上傳,但這款擷取器的設計是每次工作階段僅處理一個有大小上限的本機檔案。這項設計選擇是刻意的:PDF.js 只會在你按下按鈕後載入,不會納入初始頁面套件,並與其他 PDF.js 工具共用固定的 worker URL。新的處理作業會取消先前作業,並釋放頁面參照、載入工作與下載 URL。對於擁有十份、五十份或一百份 PDF 的人而言,其優點在於完全不必上傳、不必在伺服器上排隊,也不會有某個壞檔案污染整批作業的風險——每個檔案都會依據 25 MiB/40 頁的額度以及加密/損毀檢查獨立判定。實務上,「一次處理」就是對每個檔案重複相同步驟,再合併各檔案的報告。
對於資料夾中有數十份 PDF 的讀者而言,這種做法能有效擴展,因為工具完全在本機執行,報告也不含任何可操作內容。你可以對一個檔案執行擷取、複製文字報告、貼到母文件中,再切換至下一個檔案並重複作業。處理完每個檔案後,合併報告會保留各檔案原本的頁面標籤,因此每份 PDF 的連結清單仍可各自稽核。若你想讓檔案保持分離,則下載個別檔案的 CSV 或 TXT 是更俐落的選項,也能在試算表中輕鬆進行後續合併。
這項工具實際會讀取 PDF 內的哪些內容
許多讀者以為這是 URL 搜尋工具,會掃描每一頁的每個字詞,並標示所有看起來像網址的內容。實際情況並非如此,而這正是其輸出只有極少誤判的原因。擷取器會向 PDF.js 要求頁面註解,只選取真正的連結註解,包括支援的外部 URL,以及 PDF.js 公開的具名或明確內部目的地。僅包含 URL 的可見文字——例如印刷的註腳、看起來像斜線的字元,或中繼資料串流——並非連結註解,因此不會納入報告。
Mozilla PDF.js 專案記載了 PDFPageProxy 上的 getAnnotations 方法,這是逐頁列舉註解資料的方式;這項工具依賴該介面,而非以正規表示式比對原始 PDF 位元組。如此可避免與壓縮物件串流、內嵌字型表和一般正文文字混淆。以純文字印刷、但從未被 PDF 產生器設為可點擊的 URL,可能不會出現在報告中,這是預期行為,而非錯誤。報告只能證明 PDF.js 在該頁看見了受支援的連結註解,不能證明每個可見的 URL 都已編目。
對一份 PDF 執行擷取
- 在瀏覽器中開啟 PDF Link Extractor,並選擇要處理的本機 PDF。檔案會在本機讀取;不會有任何內容上傳至連結分析伺服器。
- 確認檔案低於 25 MiB 且少於 40 頁。加密、格式錯誤、不受支援或超過上限的 PDF,都會在擷取開始前顯示錯誤,因此請先修正或分割這些檔案。
- 按一下 Extract Links。PDF.js 及其共用 worker 會依需求載入,並依照頁面與註解順序檢查連結註解。
- 檢查結果。每個項目都會顯示頁碼、註解編號、連結類型與目標。javascript、data、file 和 blob 等不安全配置會被略過,不會顯示成可點擊項目。
- 複製純文字報告,或下載 UTF-8 TXT 或防止公式風險的 CSV。以試算表公式前置字元開頭的 CSV 儲存格會經過中和,並依 CSV 規則逸出引號與換行,讓檔案能在試算表軟體中正常開啟。
對多個檔案重複此工作流程
處理多個檔案時,請將每份 PDF 視為一次獨立執行。擷取器不會維護工作階段清單,而載入新文件也會取消先前一次執行,因此最簡單的模式是先完成一個檔案——包括複製或下載步驟——再開啟下一個。若檔案遠低於上限,這套流程的速度足以讓「一次處理多個檔案」成為每個循環只需幾秒的連續作業。若檔案未通過 25 MiB 或 40 頁檢查,請先使用 Split PDF 工具進行分割,或使用 Extract PDF Pages 擷取特定頁面範圍,再對符合限制的部分重新執行擷取。
當你需要合併多個檔案的結果時,通常 CSV 最容易合併,因為每個項目都是具有固定欄位的一列。在試算表中開啟個別檔案的 CSV,將它們附加至母工作表,並新增一欄放來源檔名,讓每個連結都能追溯回其 PDF。若想為每個檔案保留可供人閱讀的存檔,TXT 選項最合適;它採用固定頁面標籤,貼到文件或 wiki 後仍能保持一致。對於可能超過個別檔案上限的大型清單,Extract Links From a Large PDF: File Size Limits 指南會說明各項門檻的來源,以及如何預先修剪過大的 PDF。
報告包含哪些內容,以及略過哪些內容
每份報告頂端的摘要列會記錄已檢查的註解數量、已接受的連結、重複項目,以及因不安全或不受支援而略過的目標,因此你可以一眼看出是否有任何內容遭到篩選。同一頁面中完全重複的目標會被移除,但不同頁面上重複的連結仍會顯示,因為頁面出現位置是清單中的實用證據。PDF 內部目的地——包含具名目的地或指向同一文件其他位置的明確目的地陣列——會標示為內部,並以有界限的表示形式序列化。報告不保證每個內部目的地都會有最終頁碼,因為目的地結構與檢視器行為會因文件而異。
| 目標類別 | 範例 | 是否納入報告? |
|---|---|---|
| 標準網頁連結 | https://example.com/report | 是——連同頁碼與註解編號列出 |
| 電子郵件連結 | mailto:[email protected] | 是——接受此配置 |
| 電話連結 | tel:+15551234567 | 是——接受此配置 |
| 內部跳轉 | 具名目的地或明確目的地陣列 | 是——標示為內部,表示形式設有界限 |
| JavaScript URI | javascript:alert(1) | 否——以不安全配置拒絕 |
| 檔案或資料 URI | file:///etc/passwd, data:text/html;base64,... | 否——以不安全配置拒絕 |
| 含控制字元的 URL | 包含控制位元組的目標 | 否——在區分大小寫的配置檢查期間遭拒 |
| 可見的印刷 URL | 頁面上不是連結註解的純文字 | 否——不是 PDF 連結註解 |
處理多個檔案時值得注意的安全特性
由於這款擷取器是供盤點與移轉作業使用,而非供點擊連結使用,報告會以惰性文字呈現,工具也不會瀏覽、驗證或查核任何目標的聲譽。因此,即使是已接受的 http、https、mailto 與 tel 項目,也都會顯示為純文字:出現在報告中,只表示 PDF 產生器內嵌了連結註解。在你獨立驗證每個擷取到的目標之前,請一律將其視為不可信任的資料,尤其是來源 PDF 來自組織外部時。
另外兩項特性也有助於處理敏感或受合規限制的文件。第一,來源 PDF 及其目標會留在裝置上——不會上傳、不需要帳戶,也沒有伺服器端佇列。第二,CSV 輸出會依照 OWASP CSV Injection 指引進行試算表風險淨化:以試算表公式前置字元開頭的儲存格會經過中和,引號與換行會受到逸出,複製到剪貼簿時也使用同樣的惰性文字。這些特性讓你可以合理地依序對多個檔案執行此工作流程,包括含有機密內部跳轉的 PDF。
這項工具適合與不適合使用的情況
| 使用情境 | 這項工具適合嗎? | 原因 |
|---|---|---|
| 從一組 PDF 建立連結清單 | 是 | 報告按檔案輸出為 CSV 或 TXT,並保留頁面與註解順序 |
| 跨多份文件進行移轉檢查 | 是 | 內部目的地與外部 URL 都會報告,並使用固定頁面標籤 |
| 發布前的文件品質保證審查 | 是 | 你可以清楚看見 PDF.js 公開的目的地,並在外部進行驗證 |
| 斷鏈或 404 檢查 | 否 | 工具不會擷取或驗證目標 |
| 網路釣魚或恶意軟體掃描 | 否 | 會略過不安全配置,且不會執行聲譽查核 |
| 無障礙功能稽核 | 否 | 會列出連結註解,但替代文字、結構與標記不在範圍內 |
| 全文 URL 收集 | 否 | 只會讀取連結註解,而非文字層中每個形狀像 URL 的字串 |
多檔案工作需留意的限制
每個檔案的限制為 25 MiB 和 40 頁,註解數量、目標長度及報告總字元數也另有上限,因此單一文件無法產生無限量的工作或輸出。加密、損毀、不支援及超過限制的 PDF 會傳回可見的錯誤,而非部分結果;當您正在處理混合內容的資料夾時,這種行為較為安全。如果檔案已加密且您擁有密碼,可以使用 移除 PDF 密碼 移除密碼,產生未受保護的本機副本,讓擷取器之後讀取。如果檔案超過 40 頁,請使用「分割 PDF」加以分割,並對每個部分執行擷取。
對於非常大量的檔案清單,請妥善規劃處理順序,先處理格式正確的檔案,並將遭拒的檔案另外分類處理。如此一來,每個檔案的處理週期都能維持短暫,您也能讓原始 PDF 保持不變,作為來源記錄。擷取器絕不會修改輸入文件,因此檔案更新後,您可以隨時對同一份 PDF 重新執行擷取,而原始檔案仍是權威來源。
相關閱讀:PDF 轉長圖離線:本機 PNG 工作流程。