
「PDF 轉 PNG」實際上會產生什麼
將 PDF 轉成 PNG 意味著在瀏器中以選定的縮放比例將 PDF 的每一頁點陣化(rasterize),並把每一頁分別輸出成獨立的 image/png 檔案,因此輸出結果是一組扁平(flat)的 PNG——每頁一個——讓你個別下載。每個檔案代表原始頁面的可見外觀:文字、向量形狀、嵌入影像、透明度、字型與裁切路徑,全都繪製到畫布(canvas)上,再以無損(lossless)方式編碼。最終結果是每頁一張影像,而不是重新封裝的 PDF,也不是多頁合併的影像,更不是互動式文件。每個輸出檔名都根據來源檔名加上以零填補的頁碼來決定性地命名,因此一份 12 頁的報告會變成 "report-01.png"、"report-02.png",依此類推到 "report-12.png"——可依原始 PDF 的順序排序。
由於渲染完全在當前的分頁中進行,來源 PDF 從不離開瀏器。沒有伺服器端處理,沒有上傳,沒有帳號。其權衡在於:你得到的是一張點陣圖(raster),PNG 中的任何文字都無法選取、複製或搜尋;任何連結都消失;任何表單欄位都消失;任何向量形狀現在都變成像素。對於分享、預、縮圖、投影片與設計稿,這種特性通常沒問題。但對於歸檔或重新編輯來說,扁平的點陣圖是錯誤的格式,你應該把原始 PDF 與 PNG 一起保留。
無損頁面渲染最適合的場景
PNG 使用無損壓縮,這就是為什麼以 PNG 儲存的頁面渲染在 JPEG 會糊化的位置依然清晰。包含小文字、圖表、幕擷圖、線稿、UI 截圖、流程圖、示意圖與簽名的頁面,都能從無損編碼中受益,因為任何壓縮瑕疵都會變成可見的模糊。在電路圖上一條 1 像素寬的線,或 9 級本文中字母 "i" 的點,在相同位元預算下,PNG 看起來乾淨而 JPG 看起來粗糙。PNG 也支援 alpha 通道,因此 PDF 頁面的透明區域——例如放在透明背景上的標誌,或帶有透明度的重形狀——能在轉換後保留,而不會被攤平到某個彩色背景上。
無損並不代表「與原始位元組完全相同」或「無限細節」。頁面是以你選擇的縮放比例進行點陣化,字型由瀏器的渲染器繪製,產生的像素再以無損演算法編碼。較高的縮放比例會產生密度更高的點陣——每英吋更多像素——但無法憑空生出來源 PDF 原本沒有的細節。一張 72 DPI 的掃描存成 PNG 看起來仍然像 72 DPI 的掃描,只是變大了。輸出忠實呈現頁面的視覺內容,而不是對來源進行神奇的超解析(up-res)。
PDF 轉 PNG 是合適工具的常見情境:把投影片擷取為影像用於部落格文章或社群卡片、擷取藏在 PDF 規格中的 UI mockup、把單張發票頁面附加到不接受 PDF 的聊天訊息中、把圖表傳給無法開啟原始檔的人,以及為型錄製作縮圖。輸出也是把頁面放進簡報、設計工具或知識庫文章的乾淨方式,對方不需要 PDF 閱讀器就能查看。
瀏覽器如何將 PDF 頁面渲染為 PNG
當你開始轉換時,工具會把 Mozilla 的 PDF.js 及其專屬 worker 載入分頁——它們不屬於初始頁面套件,因此轉換器本身保持輕量。PDF.js 是 Firefox 內部用來顯示 PDF 的同一個渲染引擎。對每一頁,引擎會讀取頁面的內容串流——結合可選取文字、向量幾何、點陣影像、字型、透明度與裁切路徑的指令——並以你選擇的縮放比例計算視窗(viewport)。接著將頁面繪製到 HTML canvas 上。一旦 canvas 持有完整繪製好的頁面,轉換器會以明確的 MIME 類型 "image/png" 呼叫 canvas 內建的 HTMLCanvasElement.toBlob 方法,讓瀏器使用其無損 PNG 編碼器。
編碼器將像素寫入 Blob,Blob 被包裝成物件 URL,該 URL 就成為該頁的下載連結。一旦你點擊下載,檔案會以決定性的命名儲存。當你選擇新檔案或變更縮放比例,先前的結果、canvas、工作與物件 URL 都會被釋放,避免分頁在記憶體中累積數十個大型影像緩衝區。同一個 worker URL 會在 PDF 影像群組的所有工具中共用,這表示 worker 在第一次轉換後會被快取,你轉換第二個檔案時載入速度會快很多。
因為來源頁面可能結合向量、字型與透明度,渲染出的 PNG 代表的是視覺結果,而非底層結構。可選取的文字變成像素圖樣、即時連結消失、表單欄位變成靜態矩形,任何嵌入點陣影像的原始壓縮都被 PNG 的無損編碼取代。這正是讓 PNG 成為忠實視覺快照的原因,也正是讓它在編輯工作流程中無法取代來源 PDF 的原因。
可能讓任務失敗的限制
以高解析度渲染每一頁可能會在每個分頁中迅速配置數 GB 的像素記憶體,因此轉換器會在任何渲染之前檢查每個預定頁面的視窗,並拒絕超出其安全限制的輸入。在開始前了解這些限制,能避免任務被拒與徒勞的執行。
| 限制 | 數值 | 存在原因 |
|---|---|---|
| 輸入檔案大小 | 25 MiB | 讓檔案讀取維持在合理範圍 |
| 頁數 | 40 | 限制每個任務的總工作量 |
| 單邊像素 | 12,000 | 限制每頁的 canvas 尺寸 |
| 每頁百萬像素 | 40 | 限制每頁的像素記憶體 |
| 整個任務的總百萬像素 | 100 | 限制總像素記憶體 |
如果你選擇的縮放比例讓任何一頁的單邊超過 12,000 像素或超過 40 百萬像素,轉換器會在繪製任何內容前拒絕該任務。如果輸入 PDF 已加密、格式錯誤或無法讀取,你會看到明確的錯誤,而非部分輸出。此工具不會繞過密碼、不會修復損壞的交互參照表、不會驗證簽章,也不會移除惡意程式——它只會照原樣讀取檔案、繪製頁面,然後寫入 PNG。
兩個實際的後果。第一,輸入必須是你能夠開啟的 PDF,而不是包在 PDF 容器中的損壞掃描。第二,將縮放比例從 1× 提升到 3×,會讓每頁的像素面積大約增加九倍,因此一份在 1× 下輕鬆容納的 20 頁文件,在 3× 下可能會撞上總百萬像素上限。經驗法則:較高的縮放比例代表較大的檔案與更銳利的縮放表現,但記憶體會隨寬度與高度同時成長,而非只隨其中一者。
在本機將 PDF 轉成 PNG
PDF 轉 PNG 工具會在當前分頁中執行整個流程。請依照下列步驟進行乾淨的轉換。
- 選擇不超過 25 MiB 的 PDF。加密、損壞與超過上限的檔案會在第一時間被拒,因此請從你可以開啟的、未受保護且格式正確的檔案開始。
- 選擇輸出縮放比例。較高的數值會產生更大、密度更高的 PNG,並有更銳利的縮放表現;較低的數值會產生較小的檔案,對於預覽與縮圖已足夠。
- 點擊「Convert to PNG」。工具會載入 PDF.js、渲染每個預定頁面、執行無損 PNG 編碼,並顯示每個完成頁面的寬度與高度。
- 檢查每頁的尺寸。顯示的數字來自實際渲染的視窗,因此你看到的正是你將下載的內容。
- 下載 PNG。每個檔案以來源 PDF 命名,加上以零填補的頁碼,因此整套檔案會依原始順序排序。
- 如果你需要不同的縮放比例或不同的檔案,請變更選擇並再次轉換。舊結果會被清除,因此顯示的設定絕不會與先前產生的影像悄悄不一致。
PNG、JPG 或長圖——選擇正確的輸出
同一份來源 PDF,三種不同的「頁面轉影像」工具。請依文件的主導內容與接收者的使用方式來選擇。
| 輸出 | 壓縮方式 | 最適用於 | 權衡 |
|---|---|---|---|
| PNG(個別檔案) | 無損 | 文字、圖表、幕擷圖、UI 截圖,以及任何重視清晰邊緣的內容 | 檔案可能較大;每頁一個 PNG |
| JPG(個別檔案) | 有損 | 以照片為主的大型文件,當較小檔案比完美邊緣更重要時 | 文字與銳利線條周圍會出現 JPEG 瑕疵 |
| 長圖(單一 PNG) | 無損 | 適合行動裝置的動閱讀、漫畫式頁面、單一高聳匯出 | 單一檔案而非每頁一個;難以單獨嵌入 |
若文件是混合類型,最安全的預設是以中等縮放比例渲染為 PNG,讓文字保持可讀,只有在產生的檔案大小無法處理時才改用 JPG。關於堆疊變體的說明,請參考 PDF 轉長圖完整解析。若要在渲染前先調整好縮放比例,正確縮放比例指南 會說明 DPI、視窗與像素數之間的關係。
扁平點陣圖是錯誤選擇的時機
PNG 是忠實的視覺快照,而不是可編輯的文件。如果你需要以下任何一項,請繼續使用來源 PDF,而非仰賴 PNG 輸出:
- 可選取、可搜尋、可複製貼上的文字——PNG 包含的是字母的像素圖樣,而非原始字型指令。
- 互動式超連結、書籤,或可點擊的目錄——註解不會保留在點陣頁面上。
- 可編輯的表單欄位——核取方塊、文字方塊與簽名會變成靜態矩形。
- 原始向量幾何——形狀會變成像素,因此 PNG 無法在超過所選縮放比例後乾淨地重新縮放。
- 嵌入點陣影像的原始壓縮——會被 PNG 的無損編碼取代,通常檔案更大但完全精確。
對於上述任何工作流程,請直接使用來源 PDF。若要將特定頁面作為影像分享、嵌入設計工具,或製作縮圖,PNG 是正確答案,而 PDF 轉 PNG 工具能讓你在不將文件上傳到任何地方的情況下產出檔案。