当前位置 : 主页 > 网络编程 > net编程 >

如何通过C#和VB.net压缩PDF文档

来源:互联网 收集:自由互联 发布时间:2023-09-03
当PDF文档内容较多,大小较大时,往往不便于日常的保存或者发送。因此,在操作前可以对其进行压缩。Free Spire.PDF for .NET支持在.NET平台上压缩PDF文档。这一方法将通过压缩文档中的图

当PDF文档内容较多,大小较大时,往往不便于日常的保存或者发送。因此,在操作前可以对其进行压缩。Free Spire.PDF for .NET支持在.NET平台上压缩PDF文档。这一方法将通过压缩文档中的图像和不需要的注释行、空格等内容来压缩文件大小,从而确保文档的完整。这对于包含大量图像内容的PDF文档尤为有用。具体的操作及代码请参考以下内容。


程序环境

这个方法将用到的是​Free Spire.PDF for .NET​组件,支持在多种.NET应用程序中使用。具体安装方法如下:

方法一

    通过​​NuGet​​安装Free Spire.PDF for .NET,具体步骤为:打开 Visual Studio创建新项目,依次选择工具>NuGet包管理器>程序包管理器控制台,然后执行以下命令:

    PM> Install-Package FreeSpire.PDF                  

方法二

    在程序中手动引入Spire.pdf.dll文件,将​​Free Spire.PDF for .NET ​​下载到本地,解压并安装。安装完成后,打开 Visual Studio创建新项目,在右边的“解决方案资源管理器”中右键点击“引用”,再依次选择“添加引用”> “浏览”,找到安装路径下BIN文件夹中的dll文件,点击“确定”,将其添加引用至程序中。


具体步骤和代码:

  • 创建PdfDocument 类的对象。
  • 使用PdfDocument.LoadFromFile()方法加载PDF示例文档。
  • 通过将PdfDocument.FileInfo.IncrementalUpdate属性设置为 false 来禁用增量更新。
  • 设置压缩级别来压缩文档中的内容。
  • 遍历文档页面,并使用PdfImageHelper.GetImagesInfo()方法获取每个页面的图像信息集合。
  • 遍历集合中的所有项,并使用PdfImageHelper.ReplaceImage()方法将压之前的图像替换为压缩后的图像。
  • 使用PdfDocument.SaveToFile()方法将文档保存到另一个 PDF文档。

C#:

using Spire.Pdf;
using Spire.Pdf.Graphics;
using System.Drawing;
using Spire.Pdf.Utilities;

namespace CompressPdf
{
class Program
{
static void Main(string[] args)
{
//创建PdfDocument 类的对象
PdfDocument doc = new PdfDocument();

//加载PDF示例文档
doc.LoadFromFile(@"sample.pdf");

//禁用增量更新
doc.FileInfo.IncrementalUpdate = false;

//设置压缩级别
doc.CompressionLevel = PdfCompressionLevel.Best;

//遍历文档页面
foreach (PdfPageBase page in doc.Pages)
{
//创建PdfImageHelper 类的对象
PdfImageHelper helper = new PdfImageHelper();

//获取图像信息集合
PdfImageInfo[] imagesInfo = helper.GetImagesInfo(page);

//遍历图像信息集合
foreach (PdfImageInfo imageInfo in imagesInfo)
{
//将压之前的图像替换为压缩后的图像
helper.ReplaceImage(imageInfo, CompressImage(imageInfo.Image));
}

}

//保存至另一个PDF文档
doc.SaveToFile("output.pdf");
doc.Close();
}

//通过降低质量来压缩图片
private static PdfBitmap CompressImage(Image img)
{
PdfBitmap newImage = new PdfBitmap(img);
newImage.Quality = 10;
return newImage;
}
}
}

VB.net:

Imports Spire.Pdf
Imports Spire.Pdf.Graphics
Imports System.Drawing
Imports Spire.Pdf.Utilities

Namespace CompressPdf
Class Program
Shared Sub Main(ByVal args() As String)
'创建 PdfDocument 类的对象
Dim doc As PdfDocument = New PdfDocument()

'加载PDF示例文档
doc.LoadFromFile("sample.pdf")

'禁用增量更新
doc.FileInfo.IncrementalUpdate = False

'设置压缩级别
doc.CompressionLevel = PdfCompressionLevel.Best

'遍历文档页面
Dim page As PdfPageBase
For Each page In doc.Pages
'创建PdfImageHelper 对象
Dim helper As PdfImageHelper = New PdfImageHelper()

'获取图像信息集合
Dim imagesInfo() As PdfImageInfo = helper.GetImagesInfo(page)

'遍历图像信息集合
Dim imageInfo As PdfImageInfo
For Each imageInfo In imagesInfo
'将原图像替换为压缩后的图像
helper.ReplaceImage(imageInfo, CompressImage(imageInfo.Image))
Next

Next

'保存至另外一个PDF文档
doc.SaveToFile("output.pdf")
doc.Close()
System.Diagnostics.Process.Start("output.pdf")

End Sub

'通过降低质量来压缩图像
Private Shared Function CompressImage(ByVal img As Image) As PdfBitmap
Dim NewImage As PdfBitmap = New PdfBitmap(img)
NewImage.Quality = 10
Return NewImage
End Function
End Class
End Namespace

如何通过C#和VB.net压缩PDF文档_VB.net

网友评论