如何压缩 PDF

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

查克尼特·宾

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

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


适用于PDF的C# NuGet库

安装使用 NuGet

Install-Package IronPdf
Java PDF JAR

下载 DLL

下载DLL

手动安装到你的项目中

适用于PDF的C# NuGet库

安装使用 NuGet

Install-Package IronPdf
Java PDF JAR

下载 DLL

下载DLL

手动安装到你的项目中

开始在您的项目中使用IronPDF,并立即获取免费试用。

第一步:
green arrow pointer

查看 IronPDFNuget 用于快速安装和部署。它有超过800万次下载,正在使用C#改变PDF。

适用于PDF的C# NuGet库 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%!!

压缩图像 - 大小比较

了解图像压缩选项

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

收缩图像:该功能可根据 PDF 文档中的可见尺寸缩减图像分辨率。通过这种方式,它可以大大减小图像的尺寸和质量,优化图像的存储和传输效率。

HighQualitySubsampling:此设置可确定用于图像压缩的色度子采样方法。选择 "真 "则采用 4:4:4 色度子采样,确保图像质量更高,色彩细节更饱满。相反,选择 "False(假)"则采用 4:1:1 色度子采样,牺牲一些色彩细节以进一步缩小图像尺寸。

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

在 "4:4:4 "色度子采样中,每个像素都保留了自己的色彩信息,因此不会丢失色彩细节。相反,在 "4:1:1 "色度子采样中,色彩信息以较低的分辨率进行子采样,从而减少了色彩细节,但也减小了文件大小。


压缩树结构示例

此功能通过最小化 Chrome 浏览器引擎创建的树形结构来缩小 PDF 的大小。对于 Chrome 浏览器引擎从包含大量表格数据的 HTML 生成的 PDF,该功能效果很好。某些 PDF 渲染引擎在输出 PDF 时可能不带树形结构,因此该功能无效。

移除所有这些树形结构的缺点是,对于某些 PDF,高亮文本或提取可能无法有效工作。

让我们使用 表格.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 色度子采样,进一步缩小图像尺寸 (错误).

  • 缩小图像:缩减图像分辨率可大幅降低文档中图像的大小和质量。

查克尼特·宾

软件工程师

Chaknith 是开发者中的福尔摩斯。他第一次意识到自己可能在软件工程方面有前途,是在他出于乐趣做代码挑战的时候。他的重点是 IronXL 和 IronBarcode,但他为能帮助客户解决每一款产品的问题而感到自豪。Chaknith 利用他从直接与客户交谈中获得的知识,帮助进一步改进产品。他的轶事反馈不仅仅局限于 Jira 票据,还支持产品开发、文档编写和市场营销,从而提升客户的整体体验。当他不在办公室时,他可能会在学习机器学习、编程或徒步旅行。