檔案 · PDF 工具包
瀏覽器標籤如何在不上傳的情況下讀取和重寫 PDF
· 工作原理
pdf 隱私 網路工作者
「在您的瀏覽器中執行」是您可以理解和測試的宣告。這篇文章遵循 PDF 從檔案選擇器進入內存,通過 Web Worker,然後以下載的形式返回,解釋每個步驟的作用以及為什麼不涉及伺服器。
檔案選擇器不是上傳 - 選擇檔案時的困惑時刻看起來像是發送它
檔案選擇器類似於上傳控制項,因為許多網站會立即傳送所選檔案。僅選擇並不需要這種轉移。在此工具包中,瀏覽器授予頁面對使用者選擇的 File 物件的存取權限,控制器在將 PDF 位元組讀入分頁記憶體之前驗證其類型和大小。
邊界是可觀察的:選擇檔案會變更本機介面狀態,顯示其名稱、大小和頁數,並啟用操作。它不會將檔案發佈到應用程式端點。 PDF 上限為 50 MB,映像上限為 30 MB,在昂貴的處理開始之前強制執行。
從磁碟到記憶體 — 檔案 API 如何將頁面傳遞給網站本身的 JavaScript 可以讀取的位元組數組
對於 PDF,`arrayBuffer()` 提供位元組,`Uint8Array` 保存它們以供工作程序呼叫。影像批次的處理方式不同,以避免不必要的第二次讀取:保留原始檔案對象,直到瀏覽器影像準備好為止。這些是當前瀏覽器上下文內的記憶體操作,而不是遠端儲存或帳戶歷史記錄。
第一 PDF 透過工作器中的 `info` 呼叫進行檢查,因此在決定頁數時,大檔案不會阻止繪製。這個分頁可以暫時將來源位元組、解析器狀態、準備好的資源和最終輸出保存在一起。清除或關閉很重要,因為本地處理仍然消耗實際裝置資源。
大多數 PDF 轉換使用工具包背景工作執行緒; PDF 解析和畫布編碼有單獨的分割
合併、分割、擷取、刪除、重新排序、旋轉、浮水印和最終影像到 PDF 組件透過專用模組工作程式呼叫 pdf-lib。進度和取消訊息跨越該邊界,而運算工作遠離主介面執行緒。清除檔案會終止工作程序,而不是等待垃圾收集。
PDF-to-image 是重要的例外。 pdf.js 使用自己的工作程序進行解析,但瀏覽器畫布編碼必須保留在主執行緒上。渲染器在頁面之間進行讓步,以便控制項和進度可以重新繪製。說每個轉換完全在一個工作人員中執行將與已發布的實現相矛盾。
解析和寫入是本地階段,但影像準備和畫布編碼可以在主執行緒上執行
一般管道是讀取、解釋、轉換和編碼,但每個操作選擇自己的特定機制。頁面複製操作要求 pdf-lib 建立一個新檔案。旋轉會更改附加頁面元資料。水印附加圖紙。 PDF-to-image 渲染頁面,而 images-to-PDF 在工作程序組裝之前準備瀏覽器解碼的圖片。
這些差異會影響保真度。複製頁面保留可選擇的內容;將它們渲染為 PNG 或 JPEG 會將頁面變成像素並遺失其文字圖層。非 PNG/JPEG 影像可以在 PDF 彙編之前被解碼並重新編碼為 PNG。 「本地」描述的是資料移動,而不是一種通用的轉換演演算法。
下載的是一個本機物件 — Blob 和物件 URL 如何為您提供一個在任何伺服器上都不存在的檔案
每個操作都會傳回位元組或 ZIP,介面將其包裝在具有適當媒體類型的 Blob 中。結果操作呼叫共享 `downloadBlob` 幫助程序,該幫助程序建立瀏覽器下載而不是導航到伺服器檔案。在使用者將產生的工件保存到普通裝置儲存之前,它已存在於記憶體中。
組織器縮圖也使用 Blob 物件 URL,但它們的生命週期是明確的:舊 URL 在新載入之前被撤銷,並所有 URL 在銷毀或清除時都被撤銷。這種區別可以防止本地隱私權宣告隱藏記憶體洩漏。下載後,該檔案遵循普通裝置備份和共用規則。
為什麼限制是裝置的記憶體-原始的、解析的結構和重寫的副本同時存在於 RAM 中
本地工作受到 RAM 和瀏覽器策略以及明確輸入上限的限制。 PDF 可以同時存在作為來源位元組、解析的物件模型、傳輸的工作緩衝區、預覽和序列化輸出。光柵頁面會新增大型畫布,因此渲染器會測量像素預算,並可能在分配之前縮小比例。
即使低於 50 MB,手機也會比桌上型電腦更快陷入困境,因為壓縮檔案大小對解碼的頁面影像影響不大。關閉不相關的分頁、處理較少的頁面或使用較大的裝置來完成要求較高的作業。每個 PDF 的硬上限仍為 50 MB,每個映像的硬上限仍為 30 MB;記憶力並不是聲稱沒有固定限制的藉口。
其他 ToolAcre 產品可能會使用該網路;同意的生產分析也是分開的
該儲存庫指出,另外兩個 ToolAcre 產品按設計連接網絡,因此必須對每個產品的本地行為進行驗證,而不是在整個站點上進行推廣。 PDF 操作程式碼沒有攜帶檔案的端點,且自動隔離測試會檢查處理過程中的不變性。
站點範圍的分析只能在獲得同意後在規範生產主機上運作。其 ToolAcre 事件允許清單不包括檔案名稱、內容、貼上文字、URL 和確切的檔案大小,而 Google 腳本仍保留隱私權政策中所述的第三方程式碼。靜態資產或分析請求與檔案上傳不同。
重點 — 每一步都發生在您的裝置上,PDF 工具包頁面和網路面板可讓您確認
完整的生命週期是可見的:選擇一個檔案,驗證並讀取它,使用適當的工作器或渲染路徑在本地進行轉換,將輸出包裝在 Blob 中,下載它,然後清除緩衝區和物件 URL。不需要應用程式伺服器來執行這些頁面操作。
將「在瀏覽器中」視為您可以檢查的架構而不是口號。監視請求,閱讀特定於操作的註釋,並在完成後使用清除檔案和釋放記憶體。此控制項會釋放管理器影像、刪除引用並終止工作人員,從而減少記憶體壓力和標籤中敏感檔案資料的生命週期。先下載,驗證已儲存的檔案,然後清除;本地處理故意不為過早丟棄的結果提供遠端回退。