如何在 C# 中進行 PDF壓縮:使用 IronPDF 縮小檔案大小
IronPDF 在 C# 中提供了強大的 PDF 壓縮功能,可透過壓縮內嵌圖片和優化 PDF 樹狀結構來減少檔案大小,使文件在保持品質的同時,更易於管理儲存和分享。
PDF壓縮可縮小 PDF 文件的檔案大小,使其在儲存、分享和傳輸時更容易管理。 無論您是處理 HTML 產生的 PDF 或 現有的 PDF 檔案,壓縮對於最佳化文件處理都是不可或缺的。
圖片通常佔 PDF 檔案大小的大部分。 IronPDF 提供壓縮功能,可縮小內嵌圖片大小,並優化表格較多的 PDF 中常見的樹狀結構。 這些技術可與透過各種方法建立的 PDF 無縫配合,包括 URL 至 PDF 轉換和 HTML 檔案轉換。
快速入門:使用 IronPDF 進行 PDF壓縮
使用 IronPDF 的壓縮工具減少 PDF 檔案大小。 使用 PdfDocument.FromFile 載入您的 PDF 文件,然後呼叫 CompressAndSaveAs 即可一步完成壓縮並儲存優化後的 PDF 文件。此過程可在保持文件品質的同時顯著減小文件大小。
簡化工作流程(3 步驟)
- 從 NuGet 下載用於 PDF 壓縮的 C# 庫
- 匯入現有的 PDF 或渲染新的 PDF
- 呼叫
CompressAndSaveAs(outputPath, quality, removeStructureTree)即可壓縮圖片、選擇性地移除結構樹,並節省儲存檔案的步驟——所有步驟一氣呵成
CompressStructTree 和 Compress(CompressionOptions),已被棄用。 如何壓縮 PDF 中的圖片?
JPEG 壓縮品質接受從 0(最大壓縮)到 100(最小損失)的值,底層引擎決定如何應用該值。 在處理包含 嵌入式圖片的 PDF 或需要 管理字型和圖形時,瞭解這些層級會有所幫助。
- 90% 及以上:高品質
- 80%-90%:中等品質
- 70%-80%: 低品質
試驗各種不同的值,以平衡品質與檔案大小。品質降低依輸入的影像類型而有所不同 - 有些影像會比其他影像顯示更明顯的清晰度損失。 在使用 Azure Blob Storage 中的圖片或使用 自訂水印建立 PDF 時,這一點尤其重要。
:path=/static-assets/pdf/content-code-examples/how-to/pdf-compression-image.cs
using IronPdf;
ChromePdfRenderer renderer = new ChromePdfRenderer();
PdfDocument pdf = renderer.RenderUrlAsPdf("https://en.wikipedia.org/wiki/Main_Page");
// Compress images in the PDF
pdf.CompressAndSaveAs("compressed.pdf", 40);
Imports IronPdf
Dim renderer As New ChromePdfRenderer()
Dim pdf As PdfDocument = renderer.RenderUrlAsPdf("https://en.wikipedia.org/wiki/Main_Page")
' Compress images in the PDF
pdf.CompressAndSaveAs("compressed.pdf", 40)
圖片壓縮可帶來什麼結果?
減少39.24%!
品質參數如何運作?
CompressAndSaveAs 中的 quality 參數控制應用於每個嵌入影像的 JPEG 編碼品質。 傳遞一個介於 0(最大壓縮,最低質量)到 100(最小壓縮,最高品質)之間的整數,或傳遞 null 以完全跳過影像壓縮。
IronPDF 會在壓縮過程中自動重新編碼並調整圖片大小,因此無需額外設定選項。 較低的數值會產生較小的檔案,但可能會引入可見的失真現象——請透過實驗找出適合您內容的平衡點。
如何壓縮 PDF 樹狀結構?
此功能透過移除 Chrome 引擎建立的樹狀結構來減少 PDF 檔案大小。將 removeStructureTree: true 作為 CompressAndSaveAs 的第三個參數傳遞以啟用此功能。 對於包含大量表格資料且由 Chrome 引擎生成的 PDF 檔案,其效能最佳。 有些渲染引擎輸出的 PDF 沒有此結構,因此在這些情況下此功能無效。 在處理複雜的版面或將多個PDF與冗餘的結構元素合併時,此技術非常有價值。
移除樹狀結構可能會影響文字的高亮度和萃取效果。 在應用壓縮時,尤其是當用戶需要從壓縮 PDF 抽取文字和影像時,請考慮這個取捨。
Test CompressAndSaveAs with tree structure removal using this PDF with table data.
:path=/static-assets/pdf/content-code-examples/how-to/pdf-compression-tree-structure.cs
using IronPdf;
PdfDocument pdf = PdfDocument.FromFile("table.pdf");
// Compress tree structure in PDF
pdf.CompressAndSaveAs("compressedTable.pdf", null, true);
Imports IronPdf
Dim pdf As PdfDocument = PdfDocument.FromFile("table.pdf")
' Compress tree structure in PDF
pdf.CompressAndSaveAs("compressedTable.pdf", Nothing, True)
樹狀結構壓縮可以達到哪些檔案大小的減少?
減少67.90%! 此百分比會隨著表格 PDF 檔案的增加而增加。
如何同時套用兩種壓縮方法?
CompressAndSaveAs 在一次呼叫中同時處理影像和樹狀結構壓縮-傳遞一個 quality 值,並將 removeStructureTree 設定為 true。 這種組合方式對於包含圖片和結構化資料的複雜 PDF 尤其有效,例如包含圖表的報告或內嵌表格和圖形的文件。
:path=/static-assets/pdf/content-code-examples/how-to/pdf-compression-compress.cs
using IronPdf;
PdfDocument pdf = PdfDocument.FromFile("sample.pdf");
// Configure compression with automatic optimization
pdf.CompressAndSaveAs("compressed.pdf", 80, true);
Imports IronPdf
Dim pdf As PdfDocument = PdfDocument.FromFile("sample.pdf")
' Configure compression with automatic optimization
pdf.CompressAndSaveAs("compressed.pdf", 80, True)
CompressAndSaveAs 接受哪些參數?
-
outputPath(字串): 壓縮 PDF 檔案將儲存的檔案路徑。 -
quality(int?, 0–100): 應用於每個嵌入影像的 JPEG 品質。 數值越低,產生的檔案越小。 傳遞null可完全跳過影像壓縮。 removeStructureTree(布林值,預設值為false):當true時,移除 PDF 結構樹以進一步減少檔案大小。對於包含表格的 HTML 產生的 PDF 檔案最為有效。
申請壓縮時,請考慮您的使用個案。 存檔目的可能會將品質優先於檔案大小。網路發行可能需要較小的檔案。 根據您是否正在處理 PDF/A 相容的文件或標準 PDF 來微調設定。
如何在不儲存到磁碟的情況下壓縮PDF檔案?
在許多實際場景中,例如 API 回應、雲端函數或電子郵件附件,將壓縮的 PDF 寫入磁碟是不必要的或不切實際的。
CompressPdfToBytes 將壓縮後的 PDF 作為位元組數組傳回,讓您可以完全控制輸出的儲存或傳輸方式。 CompressPdfToBytes 和 CompressPdfToStream 都接受一個可選的 CompressionMode 參數,該參數控制如何執行壓縮。
:path=/static-assets/pdf/content-code-examples/how-to/pdf-compression-to-bytes.cs
using IronPdf;
PdfDocument pdf = PdfDocument.FromFile("sample.pdf");
// Compress and return as byte array
byte[] compressedBytes = pdf.CompressPdfToBytes();
File.WriteAllBytes("compressed.pdf", compressedBytes);
Imports IronPdf
Dim pdf As PdfDocument = PdfDocument.FromFile("sample.pdf")
' Compress and return as byte array
Dim compressedBytes As Byte() = pdf.CompressPdfToBytes()
File.WriteAllBytes("compressed.pdf", compressedBytes)
有哪些壓縮模式選項?
不同的部署環境對磁碟存取和效能有不同的限制。 CompressionMode 枚舉可讓您選擇合適的權衡。
-
Automatic(預設):根據系統功能選擇最佳壓縮方法。 首先嘗試HighQuality,如果磁碟存取受限,則回退到FastMemory。 -
FastMemory: 完全在記憶體中執行壓縮,無需磁碟 I/O。 速度最快,但不進行影像重採樣或降採樣,因此會產生較大的輸出檔。 HighQuality: 使用臨時磁碟存取應用最大壓縮。 產生最小的輸出文件,並進行全面的影像最佳化。 需要對系統暫存目錄擁有寫入權限。
如果您需要 Stream 而不是位元組數組,請使用 CompressPdfToStream。 當直接向 HTTP 回應、雲端儲存上傳或任何基於流的工作流程傳輸資料時,這非常有用。
:path=/static-assets/pdf/content-code-examples/how-to/pdf-compression-to-stream.cs
using IronPdf;
PdfDocument pdf = PdfDocument.FromFile("sample.pdf");
// Compress and return as Stream
using var compressedStream = pdf.CompressPdfToStream();
File.WriteAllBytes("compressed.pdf", compressedStream.ToArray());
Imports IronPdf
Dim pdf As PdfDocument = PdfDocument.FromFile("sample.pdf")
' Compress and return as Stream
Using compressedStream = pdf.CompressPdfToStream()
File.WriteAllBytes("compressed.pdf", compressedStream.ToArray())
End Using
CompressPdfToBytes 和 CompressPdfToStream 現已在所有IronPDF平台上可用,包括 Java、 Node.js和 Python。
準備好看看您還能做些什麼嗎? 在此查看我們的教學頁面:附加功能。
常見問題解答
PDF 檔案大小經壓縮後可以減少多少?
IronPDF 可透過影像壓縮與結構最佳化,將 PDF 檔案大小減少達 75%。在所示的範例中,使用影像壓縮技術將檔案縮小了 39.24%。
IronPDF 如何在 C# 中壓縮 PDF 檔案?
IronPDF 透過單一方法 — CompressAndSaveAs — 來處理壓縮作業。它會利用可設定的 JPEG 品質 (0–100) 來縮小嵌入式圖片的大小,並可透過設定 removeStructureTree: true 來選擇性地移除 PDF 的內部結構樹,此功能對於含有大量表格的文件特別有效。
PDF 中的 JPEG 壓縮應使用何種品質等級?
IronPDF 支援 JPEG 壓縮品質從 1% 到 100% 不等。建議水平為90% 以上為高品質,80%-90% 為中等品質,70%-80% 為低品質。最佳設定取決於您在檔案大小與視覺品質需求之間的平衡。
只需要一行代碼就可以壓縮 PDF 嗎?
是的,IronPDF 允許透過單行程式碼進行 PDF 壓縮:PdfDocument.FromFile("input.pdf").CompressAndSaveAs("compressed.pdf", 40); 此程式碼會載入 PDF 檔案,將圖片以 40% 品質壓縮,並儲存結果。
壓縮是否適用於從 HTML 建立的 PDF?
是的,IronPDF 的壓縮功能可與透過各種方法(包括 HTML 字串轉換為 PDF、URL 轉換為 PDF 和 HTML 檔案轉換)建立的 PDF 以及現有的 PDF 檔案無縫配合。
哪些類型的內容最受益於 PDF 壓縮?
圖片通常佔 PDF 檔案大小的大部分,因此圖片較多的文件是壓縮的理想對象。此外,具有複雜表格結構的 PDF 也能從 IronPDF 的結構樹壓縮功能中獲益。
我可以不將 PDF 儲存至磁碟就直接壓縮嗎?
是的,IronPDF 提供了 CompressPdfToBytes 和 CompressPdfToStream 方法,分別將壓縮後的 PDF 返回為位元組陣列或 Stream。這兩者皆接受可選的 CompressionMode 參數,提供 Automatic、FastMemory 或 HighQuality 壓縮選項。
除了 C# 之外,其他語言是否也支援 PDF 壓縮功能?
是的,CompressPdfToBytes 和 CompressPdfToStream 現已支援所有 IronPDF 平台,包括 Java、Node.js 和 Python。

