如何压缩 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%!!

压缩图像 - 大小比较

了解图像压缩选项

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

ShrinkImage:此功能根据图像在PDF文档中的可见大小缩小图像分辨率。 通过这样做,它显著减小了图像的大小和质量,优化它们以便于高效存储和传输。

高质量子采样:此设置决定了用于图像压缩的色度子采样方法。 选择“True”会使用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。
  • 高质量图像二次采样:此属性决定是否使用444色度二次采样来提高图像质量。(真)或 411 色度子采样,进一步缩小图像尺寸(错误).
  • ShrinkImages:缩小图像分辨率可以大幅降低文档中图像的大小和质量。

查克尼特·宾

软件工程师

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