PDF 平面化

PDF 平面化
在你的瀏覽器中.

把互動式表單欄位與註解鎖成靜態內容。收件人看得見值卻無法更改。不需上傳。

拖放要平面化的 PDF
我們會以已啟用平面化對話框的方式開啟編輯器。

親自驗證:開啟 DevTools → Network 分頁 → 拖入一個檔案。你會看到完全沒有任何上傳發生。

懂表單 把欄位值烙進頁面
免費
免註冊
免上傳
懂表單
運作方式

三個步驟。檔案永遠不離開此分頁。

1

拖放已填好的 PDF

選擇已填好的表單。它會載入瀏覽器記憶體,而非伺服器。

2

按下「平面化」

我們把欄位值與註解烙進頁面本身,並移除互動圖層。

3

下載已鎖定副本

看起來一模一樣,但收件人無法更改值。原檔保持不變。

把表單烤進頁面

把 PDF 攤平(flatten)的理由,通常是為了把目前看得到的東西凍住。一份在 PDF 裡用打字方式填好的稅務表單要寄給會計師 — 收件人應該看得到答案,但不該能編輯。一份簽好的協議在簽名欄位填寫後完成 — 轉寄出去時,該欄位不應仍是可點擊的表單元素,讓別人覆寫。一份掃描文件帶著註解和印戳回來,要再傳給更廣的人,但註解圖層不能還是可編輯的。一本可印刷的小冊子在 InDesign 裡用互動表單元件排好,在拼版進印時這些元件應該以靜態占位符的方式呈現。這裡的工作很小、也很可預期:拿一份有表單欄位或註解的 PDF,把它們目前的視覺狀態轉成永久的頁面內容。

你拿回來的是一份在螢幕上看起來一樣、但已沒有互動元素的 PDF。每個填寫過的欄位以靜態文字保留它的值。每個空白欄位變成它背景所顯示的東西(常是灰色矩形,有時什麼都看不見)。註解和印戳同樣被烤進頁面。

flatten 實際在做什麼

PDF 把表單欄位存成位於頁面上方的另一層。頁面本身對表單內容一無所知;欄位的元件在顯示時被疊上,而欄位當下的值被算繪到可見區域。攤平把那一層塌掉 — 它走過每個欄位,擷取它在操作當下的視覺狀態,把那個快照當成普通的頁面內容(文字、線條、勾選框作為路徑)畫上去,然後把表單定義本身移除。

結果是一張連續的靜態頁面,看到的就是畫上去的。文件中已沒有「表單」。讀者看不出曾經有過欄位,也沒有任何 PDF 工具能在不從零做 OCR 的情況下重新編輯這些值。

什麼會被攤平,什麼不會

  • 表單欄位(AcroForm)。文字輸入、勾選框、單選鈕、下拉選單、列表方塊、簽名欄位、按鈕。這些都會被攤平 — 目前的值或選擇變成靜態頁面內容。
  • 空欄位保留外觀。未填的文字框保留邊框,以及(常見)一條占位線;這個視覺以畫好的圖形保留。未勾的方框保留為空方塊。
  • 計算欄位擷取目前的值。有公式的欄位(Acrobat Pro 功能)凍結在當下顯示的值 — 公式在攤平後消失。
  • 註解可能被攤平,也可能不會。留言註記、螢光標記、印戳取決於寫它們的檢視器;pdf-lib 的 form.flatten() 明確只針對 AcroForm。如果你連註解一起去掉,正確的路徑是從來源檢視器做完整匯出。
  • 既有的靜態頁面內容不被動到。文字、影像、版面、書籤都不變地帶過去。

什麼會留下,什麼不會

  • 看見的內容保持不變。文字、影像、版面、字型、表單值在攤平當下的樣子 — 完整保留。
  • 書籤、連結、頁面結構都帶過去。攤平針對的是表單那一層,不是文件大綱。
  • 表單互動性消失。不再有可點擊的欄位、下拉選擇、tab 到下一個欄位。這就是這項作業的目的。
  • 數位簽章會失效。對文件的任何修改,包含攤平,都會打斷簽章的綁定。如果文件已簽署、簽章必須維持有效,就不要攤平 — 把檔案複製一份,攤平複製檔。
  • 這個動作是單向的。一旦攤平就沒有「反攤平」。表單定義已經消失。要再編輯,得在支援表單編寫的 PDF 編輯器裡從零重建欄位。

如果有什麼看起來不對

  • 「什麼都沒發生」 — 沒有可攤平的欄位。這份 PDF 沒有 AcroForm。工具在這種情況下會把檔案原樣再存一次;結果在功能上和輸入相同。要確認有沒有欄位,可以用 Adobe Reader 開啟,點「顯目顯示既有欄位」 — 沒有任何高亮就表示沒東西可攤平。
  • 有些註解沒有被烤進去。form.flatten() 這一輪只攤平 AcroForm 元件。註解類覆蓋(便利貼、螢光筆、手繪)需要不同的作業。對它們來說,從原本的檢視器重新匯出,或是先用 edit-pdf 整合。
  • 填的值在攤平後看起來不對。攤平後的呈現抓的是操作當下被畫出來的東西。如果表單有字型替換,或某個欄位顯示得跟你預期不一樣,那種烤法就會把那種樣子定下來。先在檢視器裡確認來源 — 攤平會保留你在那裡看到的樣子。
  • PDF 是加密的。先過一次 unlock-pdf;加密的 PDF 無法被修改。

常見的攤平理由

  • 把填好的表單寄給不該編輯它的人。稅務申報給會計師、合約給法務、HR 表單給人資 — 攤平鎖住數值。
  • 把填過的表單合併成單一份歸檔文件。同一份表單由不同的人填過的多份副本,合併成一個包。合併前先各自攤平,讓每一份副本保留它的值,而不會發生欄位 ID 撞車。
  • 準備印刷或公開散布。印出來的 PDF 本來就不會理會互動,但在印之前打開檔案的檢視器可能讓欄位顯示得跟印出來不一樣。先攤平,確保螢幕和紙面一致。
  • 從範本中拿掉可填寫行為。範本本身用範例值寫在欄位裡,要當作完成的範例交付。攤平把範例值定住。

實務筆記

  1. 最後再攤平。如果還要加頁碼、浮水印或壓縮 — 在文件還可編輯的時候先做這些。一旦攤平,後續依賴有表單意識的更動就會被擋住。
  2. 留住原檔。攤平版替換掉的功能無法回來。把可編輯的來源保存好,以備之後要更新欄位的值,再重攤一次。
  3. 先在一頁上測試。如果文件很大、不確定烤出來會怎樣,用 split-pdf 把一頁樣本切出來、攤平樣本、在檢視器中看結果,再來攤整份。
  4. 原檔案保持不變。下載的是攤平後的新 PDF;磁碟上的來源不會被動到。

你的檔案在這之中發生了什麼

攤平作業在你的瀏覽器內執行。打開 DevTools,在執行期間觀察 Network 分頁 — 不會有夾帶檔案內容的對外請求。PDF 留在磁碟上;攤平後的版本是它旁邊的新下載。

FAQ

常見問題

什麼是平面化(flatten)?

平面化會把互動圖層 — 表單欄位、註解、留言 — 轉成靜態頁面內容。畫面上看起來沒變,但值已是頁面的一部分,無法再被編輯。

為什麼要平面化 PDF?

為了寄出最終、不可編輯的版本:已簽合約、已填稅單、已核可的提案等。平面化能避免收件人不小心或刻意更改值。

文件外觀會不一樣嗎?

不會 — 平面化後的頁面外觀完全相同。改變屬於結構性而非視覺:欄位變成烙進去的文字,註解變成烙進去的標記。

沒有表單的 PDF 適用嗎?

適用。若沒有欄位或註解,平面化等同於「重新儲存」。最有用的情境是要鎖定表單欄位或便利貼註解。

我的檔案會傳到哪裡?

哪裡也不傳。平面化完全在此分頁內進行。可在 DevTools → Network 中驗證:不會發生上傳。