如何壓縮PDF文件

This article was translated from English: Does it need improvement?
Translated
View the article in English

查克尼思·賓

PDF 壓縮指的是減少 PDF 文件大小的過程 (可攜式文件格式) 文件。這種壓縮應用於使PDF檔案更易於存儲、共享和傳輸,尤其是當處理大型或圖像豐富的文件時。

圖像通常占據PDF檔案大小的很大一部分,因為它們通常比文本和其他內容尺寸更大。IronPDF 提供了PDF壓縮功能,可以壓縮嵌入的圖像並減少通常伴隨PDF表格數據的樹狀結構。


C# NuGet 程式庫用于 PDF

安裝與 NuGet

Install-Package IronPdf
Java PDF JAR

下載 DLL

下載DLL

手動安裝到您的項目中

C# NuGet 程式庫用于 PDF

安裝與 NuGet

Install-Package IronPdf
Java PDF JAR

下載 DLL

下載DLL

手動安裝到您的項目中

立即開始在您的專案中使用IronPDF,並享受免費試用。

第一步:
green arrow pointer

查看 IronPDFNuget 快速安裝和部署。已被下載超過800萬次,它正用C#改變PDF。

C# NuGet 程式庫用于 PDF nuget.org/packages/IronPdf/
Install-Package IronPdf

請考慮安裝 IronPDF DLL 直接下載並手動安裝到您的專案或GAC表單: IronPdf.zip

手動安裝到您的項目中

下載DLL

壓縮圖片範例

調整 JPEG 圖片大小的方式,100% 品質幾乎沒有損失,而 1% 是非常低品質的輸出影像。

  • 90% 及以上:被認為是高品質
  • 80%-90%:被認為是中品質
  • 70%-80%:被認為是低品質

請隨意探索各種數值,以了解品質和文件大小之間的權衡。需要注意的是,品質的降低會根據輸入圖片的類型而有所不同,某些圖片可能會比其他圖片更明顯地經歷清晰度的降低。

: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.CompressImages(40);

pdf.SaveAs("compressed.pdf");
Imports IronPdf

Private renderer As New ChromePdfRenderer()

Private pdf As PdfDocument = renderer.RenderUrlAsPdf("https://en.wikipedia.org/wiki/Main_Page")

' Compress images in the PDF
pdf.CompressImages(40)

pdf.SaveAs("compressed.pdf")
VB   C#

壓縮圖片 - 大小比較

減少了 39.24%!!

壓縮圖像 - 大小比較

理解圖像壓縮選項

讓我們深入了解我們的圖像壓縮選項:

ShrinkImage:此功能根據圖像在 PDF 文件中的可見大小縮小圖像解析度。通過這樣做,它大大減少了圖像的大小和質量,優化了它們的存儲和傳輸效率。

HighQualitySubsampling:此設置決定用於圖像壓縮的色度子採樣方法。選擇 "True" 將使用 4:4:4 色度子採樣,確保全彩細節的高質量圖像。相反,選擇 "False" 將使用 4:1:1 色度子採樣,以犧牲一些色彩細節來進一步減少圖像大小。

色度子採樣是數位圖像壓縮中的一項關鍵技術,旨在減少表示圖像所需的數據,同時保留其視覺質量。它通過選擇性減少色彩信息的解析度來實現這一目標。 (色度) 同時保持亮度資訊的全部解析度 (亮度)在「4:4:4」色度子採樣中,每個像素保留其自身的顏色信息,從而不會損失顏色細節。相反,在「4:1:1」色度子採樣中,顏色信息以較低分辨率子採樣,減少顏色細節但也減少文件大小。


壓縮樹狀結構範例

此功能用於通過最小化 Chrome 引擎創建的樹狀結構來減少 PDF 的大小。它適用於從包含大量表數據的 HTML 生成的 PDF。某些 PDF 渲染引擎可能會輸出不包含此樹狀結構的 PDF,使得此功能無法生效。

移除所有此樹狀結構的缺點是對於某些PDF,高亮文本或提取功能可能不會那麼有效。

讓我們使用 table.pdf 文件來測試 CompressStructTree 方法。

: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.CompressStructTree();

pdf.SaveAs("compressedTable.pdf");
Imports IronPdf

Private pdf As PdfDocument = PdfDocument.FromFile("table.pdf")

' Compress tree structure in PDF
pdf.CompressStructTree()

pdf.SaveAs("compressedTable.pdf")
VB   C#

樹狀結構壓縮 - 大小比較

減少了 67.90%!! 這個百分比會隨著較大的表格 PDF 增加。

壓縮樹結構 - 尺寸比較

進階壓縮方法

IronPDF 也具有 Compress 方法,可用於配置圖像壓縮和樹形結構壓縮,使文件壓縮變得前所未有的簡單。

:path=/static-assets/pdf/content-code-examples/how-to/pdf-compression-compress.cs
using IronPdf;

PdfDocument pdf = PdfDocument.FromFile("sample.pdf");

CompressionOptions compressionOptions = new CompressionOptions();

// Configure image compression
compressionOptions.CompressImages = true;
compressionOptions.JpegQuality = 80;
compressionOptions.HighQualityImageSubsampling = true;
compressionOptions.ShrinkImages = true;

// Configure tree structure compression
compressionOptions.RemoveStructureTree = true;

pdf.Compress(compressionOptions);

pdf.SaveAs("compressed.pdf");
Imports IronPdf

Private pdf As PdfDocument = PdfDocument.FromFile("sample.pdf")

Private compressionOptions As New CompressionOptions()

' Configure image compression
compressionOptions.CompressImages = True
compressionOptions.JpegQuality = 80
compressionOptions.HighQualityImageSubsampling = True
compressionOptions.ShrinkImages = True

' Configure tree structure compression
compressionOptions.RemoveStructureTree = True

pdf.Compress(compressionOptions)

pdf.SaveAs("compressed.pdf")
VB   C#

探索可用選項

  • CompressImages:控制文檔中的現有圖像是否使用 JPG 編碼進行壓縮。其默認值為 false。
  • RemoveStructureTree:移除結構樹可以顯著減少文檔占用的磁碟空間。但是,這可能會對文本選擇產生負面影響,特別是在複雜文檔中。
  • JpegQuality:指定 JPEG 的質量 (從1到100) 在圖像壓縮過程中使用。默認值為42。
  • HighQualityImageSubsampling: 此屬性決定是否使用444色度抽樣以獲得更高的圖像質量 (真) 或 411 色度抽样以進一步減少圖像大小 (錯誤)- ShrinkImages:縮小影像解析度可以大幅減小文件中影像的大小和質量。

查克尼思·賓

軟體工程師

Chaknith 是開發者界的夏洛克福爾摩斯。他第一次意識到自己可能有個軟體工程的未來,是在他為了娛樂而參加程式挑戰的時候。他的重點是 IronXL 和 IronBarcode,但他也引以為豪的是,他幫助客戶解決所有產品的問題。Chaknith 利用他與客戶直接對話中獲得的知識,以進一步改進產品。他的實際反饋超越了 Jira 工單,並支持產品開發、文件撰寫和行銷,以提升客戶的整體體驗。不在公司時,他通常在學習機器學習、寫程式和徒步旅行。