文件·PDF 工具包
在瀏覽器中合併 PDF 時會發生什麼
· 工作原理
pdf 文件格式 瀏覽器處理
合併 PDF 看起來像裝訂,但該工具實際上是將頁面物件、字體和圖像從一個物件圖中複製到另一個物件圖中,並編寫一個新的交叉引用表。這篇文章將介紹在瀏覽器標籤中發生的整個過程。
事實並非如此——為什麼兩個 PDF 不能簡單地連接為位元組以及合併工具必須重建什麼
兩個 PDF 都有自己的標題、物件編號、頁面樹和交叉引用資訊。在第一個文件之後附加第二個文件的位元組不會將其頁面新增到第一個文件的頁面樹中。合併必須編寫一個新的 PDF,其中包含指向其自身物件的參考。
將每個文件讀入記憶體 - 瀏覽器如何透過文件 API 將 PDF 作為位元組數組加載,而無需任何上傳
文件選擇器向瀏覽器提供 File 對象,而不是伺服器 URL。 PDF 介面使用 file.arrayBuffer() 讀取每個選定的文件,並將 Uint8Array 位元組傳遞給處理操作。合併不會上傳文件。這與聲稱訪問網站從不發出網絡請求不同:加載網站本身需要連接。
解析物件圖-解析器必須重建的標頭、編號物件、頁樹和交叉引用表
PDF 庫會載入每個來源文件並解析其頁面索引。頁面指的是文件中其他位置的對象,包括字體、圖像和圖形狀態。交叉引用部分或流可以幫助讀者定位間接物件;它不是一個可以黏合在一起的頁面清單。損壞或加密的輸入可能會阻止解析。
複製頁面及其資源-為什麼每個字體、圖像和圖形都聲明頁面引用必須隨之移動
此實作依序為每個輸入呼叫 PDFDocument.create(),然後呼叫 out.copyPages(source, source.getPageIndices()),並將每個複製的頁面新增至輸出。庫傳遞每個頁面所需的引用結構;它不製作點陣圖螢幕截圖。不要假設每個文檔級功能都會隨頁面移動。
編寫合併文件 - 重新編號對象,建立新的頁面樹和交叉引用表,然後給您下載
新增頁面後,庫會儲存新的 PDF 位元組數組。它的編寫器處理物件參考和序列化,而不是連接原始檔案。該應用程式提供結果下載。由於這是一個新文檔,因此位元組大小不需要等於輸入的總和。
工作範例 - 合併三頁求職信和十二頁掃描協議,以及結果的頁面順序和大小告訴您什麼
假設辦公室管理員先選擇三頁的求職信,然後選擇十二頁的協議。結果應有 15 頁:封面 1-3 頁,然後協議頁 4-15。在發送文件前檢查第一頁和最後一頁以及總數。掃描的協定可能會導致輸出較大,因為其頁麵包含影像資源。
這不包括書籤、表單欄位和文件元數據,其處理取決於工具本身的規則並記錄在其頁面上
頁面複製不保證書籤、表單欄位、元資料或簽名的保存。特別是,永遠不要假設加密簽章在結構重寫後仍然有效。保留原件並單獨核實任何法律簽名要求;新文件不是經過簽署的原始文件。
重點 — 合併是結構重寫,而不是串聯,PDF Toolkit 在選項卡中執行重寫,檔案永遠不會離開您的設備
PDF 合併是結構重寫。 PDF 工具包讀取標籤中選定的字節,按選定文件順序複製頁面並寫入新文件。若要在會話期間檢查本機處理邊界,請在合併時檢查瀏覽器網路面板;將網站資產負載與文件的任何上傳區分開來。