在Spire.PDF组件中,我们可以通过以下两种方式来压缩PDF文档:
- 压缩文档内容
- 压缩文档中的图片
压缩文档内容
我们可以通过PdfCompressionLevel枚举来设置PDF文档的压缩级别。可选级别有best, normal, above normal等。
C#
//加载PDF文档
PdfDocument doc = new PdfDocument("Test.pdf");
//禁用incremental update
doc.FileInfo.IncrementalUpdate = false;
//设置PDF文档的压缩级别
doc.CompressionLevel = PdfCompressionLevel.Best;
//保存并关闭文档
doc.SaveToFile("Compressed.pdf");
doc.Close();
VB.NET
'加载PDF文档
Dim doc As New PdfDocument("Test.pdf")
'禁用incremental update
doc.FileInfo.IncrementalUpdate = False
'设置PDF文档的压缩级别
doc.CompressionLevel = PdfCompressionLevel.Best
'保存并关闭文档
doc.SaveToFile("Compressed.pdf")
doc.Close()
压缩文档中的图片
图片通常在PDF文档的大小中占有很大的比例,我们可以提取原文档中的图片,压缩/降低图片质量,然后用压缩后的图片替换原文档中的图片来减少PDF文档的大小。
C#
//加载PDF文档
PdfDocument doc = new PdfDocument("Image.pdf");
//禁用incremental update
doc.FileInfo.IncrementalUpdate = false;
//遍历文档所有页面
foreach (PdfPageBase page in doc.Pages)
{
//提取页面中的图片
Image[] images = page.ExtractImages();
if (images != null && images.Length > 0)
{
//遍历所有图片
for (int j = 0; j < images.Length; j++)
{
Image image = images[j];
PdfBitmap bp = new PdfBitmap(image);
//降低图片的质量
bp.Quality = 20;
//用压缩后的图片替换原文档中的图片
page.ReplaceImage(j, bp);
}
}
}
//保存并关闭文档
doc.SaveToFile("Output.pdf");
doc.Close();
VB.NET
'加载PDF文档
Dim doc As New PdfDocument("Image.pdf")
'禁用incremental update
doc.FileInfo.IncrementalUpdate = False
'遍历文档所有页面
For Each page As PdfPageBase In doc.Pages
'提取页面中的图片
Dim images As Image() = page.ExtractImages()
If images IsNot Nothing AndAlso images.Length > 0 Then
'遍历所有图片
For j As Integer = 0 To images.Length - 1
Dim image As Image = images(j)
Dim bp As New PdfBitmap(image)
'降低图片的质量
bp.Quality = 20
'用压缩后的图片替换原文档中的图片
page.ReplaceImage(j, bp)
Next
End If
Next
'保存并关闭文档
doc.SaveToFile("Output.pdf")
doc.Close()