Google Drive 將 PDF 儲存為普通檔案,每份文件只會公開一個分享網址,絕對不會列出文件內所有可點擊的連結。要從 Google Drive 取得 PDF 連結,您必須將檔案下載到您的裝置上,並在本機執行一個擷取工具,以依照頁面順序讀取 PDF 的連結註解,再將結果複製或下載成純文字或 CSV。採用註解式做法相當重要,因為 PDF 格式會將可點擊的連結物件與可見的文字層分開:只印在頁面上、但沒有設為可點擊的網址,並不是連結註解,不會出現在報告中;反觀隱形或隱藏的可點擊註解,則仍然會出現。擷取完成後,您可以自行排序、篩選或稽核這些目標,並且可以保留原始 PDF 作為紀錄來源,因為 Drive 端或工具端都不會對檔案做任何修改。Drive 的預覽功能在您將游標懸停時可能會顯示部分目的地,但不會匯出這些目的地,因此一款完全在本機運作的專用擷取工具,才是實際可行的做法。

how to get pdf link from google drive
如何從 Google Drive PDF 中擷取嵌入連結

為什麼 Google Drive 本身不會顯示連結清單

Google Drive 是一個儲存與預覽層。針對每個檔案(包括 PDF),Drive 會提供一個格式類似 https://drive.google.com/file/d/<FILE_ID>/view?usp=sharing 的可分享網址,以及另一個由相同檔案 ID 加上 export=download 所構成的直接下載網址。這些網址描述的是檔案本身,與 PDF 作者嵌入在文件第 3、7、12 頁上的可點擊目標完全無關。

Drive 內建的預覽功能,有時當您在瀏覽器中將游標懸停在連結上時,可能會顯示單一目的地,但它並不會彙整這些連結,也無法讓您複製一份清單,更不會區分外部網址與同一份文件內部的跳躍。如果這份 PDF 是從 Google Docs、Slides 或任何其他將即時連結扁平化為 PDF 註解的編輯器匯出的,這些目的地對 Drive 的分享介面來說就會變得不可見。若要批次處理、稽核、遷移這些目標,或建立引用清單,您需要一種能在自己裝置上讀取 PDF 的方法。

PDF 中什麼才算是一個連結

人們經常會混淆兩件事。一份 PDF 可以在頁面上以可見文字的形式包含一個網址,而同一份 PDF 也可以包含一個連結註解,將頁面上的某個區域變成可點擊的熱點。只有註解才能讓網址成為真正的連結。PDF Link Extractor 是透過 PDF.js 的頁面註解 API(請參閱 PDFPageProxy getAnnotations 參考文件)從註解資料中讀取連結,而不是從文字掃描中讀取,這也是為什麼它的結果與「從文字中找出網址」的做法不同。

這個區別能大幅減少誤判。壓縮過的 PDF 串流、字型字符名稱、中繼資料欄位,以及像「請參閱 https://example.com 以了解背景」這類一般散文內容,對單純的文字搜尋來說看起來都像是網址,但其實並不能點擊。這個工具會忽略這些內容。反過來也值得了解:一個註解可能是隱形的、大小如單一文字的透明熱點、標題,甚至是整個頁面,但它仍然會出現在報告中,因為 PDF.js 會將它視為連結物件,而不管它的視覺範圍大小。

在本機擷取 Google Drive PDF 中的所有連結

  1. 在瀏覽器中開啟 Google Drive 並找到該 PDF。在檔案上按右鍵並選擇下載。Drive 可能會警告此檔案無法進行病毒掃描;請確認將 PDF 儲存到您可以控制的資料夾(下載或桌面都很適合),以便下一步能在本機讀取它。
  2. 在同一個瀏覽器中開啟 PDF Link Extractor。在您採取行動之前,頁面上的內容不會動到您的檔案,因為 PDF.js 及其 worker 只會在按下按鈕後才會載入。
  3. 點擊檔案選擇器並選取已下載的 PDF。此工具一次只能接受一個檔案,上限為 25 MiB 與 40 頁。加密、損壞或超出限制的文件會顯示明確的錯誤訊息,而不是產生一份不完整的報告。
  4. 點擊Extract Links。工具會逐頁瀏覽文件,擷取支援的連結註解,並依照頁面順序將結果分組,同時保留註解編號,包括支援的外部網址以及具名或明確的內部目的地。
  5. 檢閱惰性目標清單。每一列會顯示頁碼、註解索引、連結類型,以及以純文字呈現的目標。JavaScript、data、file、blob 及其他不安全的通訊協定會被過濾掉,而不是顯示為可點擊。
  6. 將報告複製到剪貼簿,或將它下載為 UTF-8 TXT 檔或對公式安全的 CSV。CSV 會跳脫引號與換行字元,並對任何以試算表公式前置字元(=、+、-、@)開頭的內容進行中和處理,因此日後開啟報告時,擷取出的目標不會變成公式。

報告包含哪些內容,以及略過哪些內容

這款擷取工具刻意採取了保守的做法。它只接受一組狹窄且實用的通訊協定,其餘全部拒絕,因此您下載的檔案中只會包含值得人工檢視的目標。同份文件內部的 PDF 目的地、具名目的地,以及指向同一份文件中其他頁面的明確目的地陣列,也都會被擷取並標示為內部目標。它們未必都有網址,且工具並不保證能將每一個都解析為最終頁碼,因為不同 PDF 的目的地結構、頁面參照與檢視器行為都不盡相同。

目標類別範例在報告中的處理方式
接受的外部通訊協定https://example.com/page, http://archive.org/item, mailto:[email protected], tel:+15551234567以惰性文字形式包含,並附上頁碼與註解編號
內部 PDF 目的地同一檔案中的具名目的地或明確目的地陣列以內部目標形式包含,並以有界限且可讀的方式呈現
被拒絕的通訊協定javascript:, data:, file:, blob:完全略過,並計入略過摘要中
格式錯誤或包含控制字元的輸入包含 Tab、換行或其他控制位元組的目標由不分大小寫的通訊協定檢查機制拒絕,不會顯示
看起來像網址的可見文字段落中出現的「Visit https://example.com」不是連結註解,因此不會包含

同一頁面上完全相同的重複項目會被移除,因此單一熱點即使有兩個重疊的註解矩形,也不會產生兩列相同的資料。同一個連結出現在不同頁面時,則會在兩處都保留,因為連結所在的頁面對於稽核與遷移檢查而言是有用的證據。報告頂端的摘要列會包含已檢查的註解數量、接受的連結、重複項,以及略過的不安全或不支援目標。

點擊任何內容之前的安全提醒

這份報告刻意設計成惰性。工具只會以純文字形式讀取註解目標,絕不會擷取、開啟、驗證、檢查信譽或擔保任何目的地的安全性。請將這份檔案視為一份指標清單,而不是一份安全的網址清單。以 https:// 開頭的目標,仍可能導向釣魚頁面、惡意程式主機,或已易主的網域。

CSV 匯出會多一層保護機制,以應對一項特定風險:在 Excel、LibibreOffice 或 Google Sheets 中開啟時,以 =、+、- 或 @ 開頭的目標字串可能會被解讀為試算表公式。工具會在序列化之前將這類內容中和處理,並依標準 CSV 規則跳脫引號與內嵌的換行字元。即使經過這樣的中和處理,您仍應將所有源自文件的文字視為不受信任的資料,絕對不要在未先查看的情況下,將原始目標貼到 shell 提示字元或瀏覽器網址列中。對重要目的地進行獨立驗證是工作流程的一部分,而不是可有可無的額外步驟。

報告的實際用途

一旦您擁有了一份乾淨的目標清單,許多工作就會變得更輕鬆。遷移稽核是最常見的用途:當您將一批 PDF 從某個平台搬到另一個平台時,您會希望記錄下讀者應該能前往的每一個外部網址,如此才能檢查新平台是否完整保留了它們。文件品保(QA)是另一項用途,審查者會比對預定目的地的清單與實際上線的內容。從冗長報告中收集引用資料、合規審查的連結清單,以及在 PDF 發布前進行快速健全性檢查,也都是想要取得這份清單的理由。

如果您的檔案超過 40 頁或 25 MiB 的限制,擷取工具會事先告知您,而不是產生不完整且誤導性的結果。對於非常大的文件,可以透過 分割 PDF 將其切成較小的部分,然後分別送入擷取工具,以取得完整的涵蓋範圍。Drive 上的原始 PDF 不會被修改,因此 Drive 仍然持有紀錄來源,而本機複本則會與報告一起留在您的裝置上。擷取作業的設計也能自我清理:當一項新工作啟動時,會取消先前的工作;當您繼續其他操作時,PDF 頁面、載入工作與暫時性的下載網址都會被釋放。