如何在C#中压缩PDF

How to Compress PDFs

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

PDF压缩是指减少PDF(便携式文档格式)文件大小的过程。 此压缩旨在使PDF文件更易于存储、共享和传输,尤其是在处理大型或图像丰富的文档时。

图像通常占据PDF文件大小的很大一部分,因为它们通常比文本和其他内容更大。 IronPdf提供PDF压缩功能,可以压缩嵌入的图像并减少PDF中经常伴随表格数据的树结构。

快速入门:使用IronPDF压缩PDF文件

使用IronPDF强大的压缩工具轻松减少PDF文件大小。 首先使用PdfDocument.FromFile加载您的PDF,使用默认选项通过Compress方法应用压缩,然后保存优化后的PDF。 此快捷简便的过程可确保显著的文件大小减少,同时保持质量,非常适合.NET C#开发者寻求高效的文档管理。

Nuget IconGet started making PDFs with NuGet now:

  1. Install IronPDF with NuGet Package Manager

    PM > Install-Package IronPdf

  2. Copy and run this code snippet.

    PdfDocument.FromFile("input.pdf").CompressImages(40).SaveAs("compressed.pdf");
  3. Deploy to test on your live environment

    Start using IronPDF in your project today with a free trial
    arrow pointer
class="hsg-featured-snippet">

最小工作流程(5步)

  1. 从NuGet下载用于PDF压缩的C#库
  2. 导入现有PDF或渲染新的PDF
  3. 使用CompressImages方法减小PDF中的图像大小
  4. 利用CompressStructTree方法最小化PDF的树结构
  5. 导出压缩后的PDF文档


压缩图像示例

在调整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")
$vbLabelText   $csharpLabel

压缩图像 - 大小对比

减少了39.24%!!

class="content-img-align-center">
class="center-image-wrapper"> 压缩图像 - 大小对比

了解图像压缩选项

让我们深入了解我们的图像压缩选项:

ShrinkImage:此功能根据PDF文档中可见的图像大小缩小图像分辨率。 通过这样做,大大减少了图像的大小和质量,为高效的存储和传输进行了优化。

HighQualitySubsampling:此设置决定了用于图像压缩的色度抽样方法。 选择“True”使用4:4:4色度抽样,确保更高质量的图像,具有完整的颜色细节。 相反,选择“False”使用4:1:1色度抽样,牺牲一些颜色细节以进一步减少图像大小。

色度抽样是数字图像压缩中的重要技术,旨在减少表示图像所需的数据,同时保持其视觉质量。 通过选择性地降低颜色信息(色度)的分辨率而保持亮度信息(亮度)的完整分辨率来实现这一点。

在“4:4:4”色度抽样中,每个像素保留其自身的颜色信息,因此没有颜色细节的丢失。 相反,在“4:1:1”色度抽样中,颜色信息以较低分辨率进行抽样,减少了颜色细节,但也减少了文件大小。

<hr

压缩树结构示例

此功能用于通过最小化Chrome引擎创建的树结构来减少PDF的大小。它适用于由Chrome引擎从包含大量表格数据的HTML生成的PDF。 某些PDF渲染引擎可能会输出不带此树结构的PDF,使得此功能无效。

删除所有这些树结构的缺点是,对于某些PDF,高亮显示文本或提取可能效果不佳。

Let's use the PDF with table data to test the CompressStructTree method.

: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")
$vbLabelText   $csharpLabel

压缩树结构 - 大小对比

减少了67.90%!! 此百分比在更大的表格PDF中增加。

class="content-img-align-center">
class="center-image-wrapper"> 压缩树结构 - 大小对比

高级压缩方法

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")
$vbLabelText   $csharpLabel

探索可用选项

  • CompressImages:控制文档中现有图像是否使用JPG编码进行压缩。 默认是false。
  • RemoveStructureTree:移除结构树可以显著减少文档使用的磁盘空间。 但这可能会对文本选择产生负面影响,尤其是在复杂文档中。
  • JpegQuality:指定在图像压缩期间使用的JPEG质量(范围从1到100)。 默认是42。
  • HighQualityImageSubsampling:此属性决定是否使用4:4:4色度抽样以获得更高图像质量(true),或使用4:1:1色度抽样以进一步减小图像大小(false)。
  • ShrinkImages:缩小图像分辨率可以大幅减少文档中图像的大小和质量。

准备好看看您还能做些什么吗? 查看我们的教程页面:额外功能

常见问题解答

如何在.NET C#中压缩PDF图像?

您可以使用IronPDF在.NET C#中压缩PDF图像。该库提供一个名为CompressImages的方法,允许您调整JPEG质量并选择不同的色度抽样选项以有效减少图像大小。

使用.NET库进行PDF压缩的好处是什么?

使用像IronPDF这样的.NET库进行PDF压缩,可以将PDF尺寸缩减直接集成到您的C#应用程序中,通过减少文件大小来增强文档管理,使存储和共享更容易。

如何减小包含大量表格数据的PDF的大小?

要减小包含大量表格数据的PDF大小,可以使用IronPDF的CompressStructTree方法。此方法最小化PDF的树结构,显著减小文件大小的同时保持文档的完整性。

在PDF压缩中有哪些图片质量调整选项?

IronPDF提供在压缩过程中调整图片质量的选项,例如JpegQuality参数,范围从1到100。较高的值可以保持更多的图像细节,而较低的值则增加压缩。

我能在PDF图像压缩期间控制色度抽样吗?

是的,IronPDF允许您在PDF图像压缩期间控制色度抽样,通过HighQualitySubsampling设置。这使您可以选择更高的图像质量(4:4:4)或更大的尺寸减少(4:1:1)。

删除PDF中的结构树有什么潜在缺点?

虽然使用IronPDF的压缩功能删除PDF中的结构树可以显著减少文件大小,但可能会影响复杂文档中的文本选择和提取,因此需要考虑这种权衡。

如何在PDF中配置图像和树结构压缩?

IronPDF提供一个Compress方法,允许您在PDF中配置图像和树结构压缩。此方法提供了调整设置的灵活性,以实现质量和文件大小之间的理想平衡。

在.NET C#中开始压缩PDF需要采取哪些步骤?

要开始在.NET C#中压缩PDF,请从NuGet下载IronPDF库,导入或渲染现有PDF,并使用CompressImagesCompressStructTree等方法有效减少文件大小。

IronPDF 在压缩 PDF 时是否与 .NET 10 完全兼容?

是的——IronPDF 完全兼容 .NET 10。您可以在 .NET 10 项目中使用它来压缩 PDF 文件,可以使用与 .NET 10 相同的压缩方法,例如CompressImagesCompressStructTree或带有CompressionOptionsCompress方法,以获得一致的压缩结果和性能。它支持的运行时版本包括 .NET 10。⁠([ironpdf.com](https://ironpdf.com/?utm_source=openai))

Chaknith Bin
软件工程师
Chaknith 在 IronXL 和 IronBarcode 工作。他在 C# 和 .NET 方面有着深厚的专业知识,帮助改进软件并支持客户。他从用户互动中获得的见解有助于更好的产品、文档和整体体验。
审核者
Jeff Fritz
Jeffrey T. Fritz
首席项目经理 - .NET 社区团队
Jeff 也是 .NET 和 Visual Studio 团队的首席项目经理。他是 .NET Conf 虚拟会议系列的执行制片人,并主持“Fritz and Friends”直播节目,每周两次与观众一起谈论技术并编写代码。Jeff 撰写研讨会、演示文稿并计划包括 Microsoft Build、Microsoft Ignite、.NET Conf 和 Microsoft MVP 峰会在内的最大型微软开发者活动的内容。
准备开始了吗?
Nuget 下载 16,154,058 | 版本: 2025.11 刚刚发布