您可能需要将 PDF 文档的页面作为图像文件与他人共享。作为 C# 开发人员,您可以在 .NET 应用程序中以编程方式轻松地将 PDF 文件转换为 PNG、JPG、TIFF 或 BMP。在本文中,您将学习如何使用 C# 将 PDF 转换为图像。
本文讨论/涵盖了以下主题:
- PDF 到图像转换 C# API
- 使用 C# 将 PDF 转换为 PNG 图像
- 使用 C# 将 PDF 转换为 JPG 图像
- C# 中的 PDF 到 BMP 转换
- C# 中的 PDF 到 TIFF 转换
- 使用 C# 从 PDF 文档中提取图像
PDF 到图像转换 C# API
为了将 PDF 转换为图像,我将使用 Aspose.PDF for .NET API。它是一个功能强大的 PDF 文件管理 API,可让您在 .NET 应用程序中操作 PDF 文档。它允许您在不使用 Adobe Acrobat 的情况下创建、修改、转换、渲染、保护和打印文档。
您可以下载 API 的 DLL 或使用 NuGet 安装它。
Install-Package Aspose.Pdf
使用 C# 将 PDF 转换为 PNG 图像
您可以按照以下步骤以编程方式将 PDF 文件转换为 PNG 图像:
- 使用输入 PDF 文件路径创建 Document 类的实例。
- 使用 Document.Pages 集合循环浏览 PDF 的所有页面并执行以下操作:
- 创建 Resolution 类的实例并设置其值。
- 创建 PngDevice 类的实例并传递 Width、Height 和 Resolution 对象。
- 使用页码和输出 PNG 图片路径调用 Process(Page, String) 方法,将页面转换为 PNG。
以下代码示例展示了如何使用 C# 将 PDF 页面转换为 PNG 图像。
// 打开文档
Document pdfDocument = new Document("C:\\Files\\sample.pdf");
foreach (var page in pdfDocument.Pages)
{
// 定义分辨率
Resolution resolution = new Resolution(300);
// 创建具有指定属性的 Png 设备
// 宽度、高度、分辨率
PngDevice PngDevice = new PngDevice(500, 700, resolution);
// 转换特定页面并将图像保存到流
PngDevice.Process(pdfDocument.Pages[page.Number], "C:\\Files\\image" + page.Number + "_out" + ".Png");
}
Document 类表示 PDF 文档。它提供了几个属性和方法来执行各种功能。 Document.Pages 集合是文档页面的集合,页面编号从集合中的 1 开始。 Resolution 类定义图像分辨率。 PngDevice 类允许将 PDF 文档的页面保存为 PNG 图像。此类提供以下方法将页面保存为 PNG 图像:
- 进程(页面,字符串) — Performs some operation on the given page and saves results into the file at given path.
- 进程(页面,流) — Converts the page into PNG and saves it in the output stream.
使用 C# 将 PDF 转换为 JPG 图像
您可以按照以下步骤以编程方式将 PDF 文件转换为 JPG 图像:
- 使用输入文件路径创建 Document 类的实例。
- 使用 Document.Pages 集合循环浏览 PDF 的所有页面并执行以下操作:
- 创建 Resolution 类的实例并设置其值。
- 创建 JpegDevice 类的实例并传递 Width、Height 和 Resolution 对象。
- 使用页码和输出 JPG 图片路径调用 Process(Page, String) 方法,将页面转换为 JPG。
以下代码示例展示了如何使用 C# 将 PDF 页面转换为 JPG 图像。
// 打开文档
Document pdfDocument = new Document("C:\\Files\\sample.pdf");
foreach (var page in pdfDocument.Pages)
{
// 定义分辨率
Resolution resolution = new Resolution(300);
// 创建具有指定属性的 Jpeg 设备
// 宽度、高度、分辨率
JpegDevice JpegDevice = new JpegDevice(500, 700, resolution);
// 转换特定页面并将图像保存到流
JpegDevice.Process(pdfDocument.Pages[page.Number], "C:\\Files\\image" + page.Number + "_out" + ".Jpg");
}
使用 C# 将 PDF 转换为 BMP
您可以按照以下步骤以编程方式将 PDF 文件转换为 BMP 图像:
- 使用输入文件路径创建 Document 类的实例。
- 使用 Document.Pages 集合循环浏览 PDF 的所有页面并执行以下操作:
- 创建 Resolution 类的实例并设置其值。
- 创建 BmpDevice 类的实例并传递 Width、Height 和 Resolution 对象。
- 使用页码和输出BMP图像路径调用Process(Page, String)方法,将页面转换为BMP。
以下代码示例展示了如何使用 C# 将 PDF 页面转换为 BMP 图像。
// 打开文档
Document pdfDocument = new Document("C:\\Files\\sample.pdf");
foreach (var page in pdfDocument.Pages)
{
// 定义分辨率
Resolution resolution = new Resolution(300);
// 创建具有指定属性的 PNG 设备
// 宽度、高度、分辨率
BmpDevice BmpDevice = new BmpDevice(500, 700, resolution);
// 转换特定页面并将图像保存到流
BmpDevice.Process(pdfDocument.Pages[page.Number], "C:\\Files\\image" + page.Number + "_out" + ".bmp");
}
使用 C# 将 PDF 转换为 TIFF
您可以按照以下步骤以编程方式将 PDF 文件转换为 TIFF:
- 使用输入文件路径创建 Document 类的实例。
- 初始化 Resolution 类的实例并设置其值。
- 创建 TiffSettings 类的实例。
- 设置各种属性,例如 Compression、Depth、Shape 和 SkipBlankPages 等。
- 使用 Resolution 和 TiffSettings 对象创建 TiffDevice 类的实例。
- 使用 Document 对象和输出 TIFF 文件路径调用 Process(Document, String) 方法以将文档转换为 TIFF。
以下代码示例展示了如何使用 C# 将 PDF 文件转换为 TIFF。
// 打开文档
Document pdfDocument = new Document("C:\\Files\\sample.pdf");
// 定义分辨率
Resolution resolution = new Resolution(300);
// 创建 TiffSettings 对象
TiffSettings tiffSettings = new TiffSettings
{
Compression = CompressionType.None,
Depth = ColorDepth.Default,
Shape = ShapeType.Portrait,
SkipBlankPages = false
};
// 创建 TIFF 设备
TiffDevice tiffDevice = new TiffDevice(resolution, tiffSettings);
// 转换特定页面并将图像保存到流
tiffDevice.Process(pdfDocument, "C:\\Files\\AllPagesToTIFF_out.tif");
TiffSettings 类提供了几个用于将 PDF 转换为 TIFF 的设置。在将 PDF 转换为 TIFF 时,您可以设置亮度、压缩、坐标类型、深度、边距、形状和 SkipBlankPages。
使用 C# 从 PDF 文档中提取图像
您可以按照以下步骤以编程方式从任何 PDF 文件中提取所有图像:
- 使用输入文件路径创建 Document 类的实例。
- 对于每个页面,为 Page.Resources.Images 集合中的每个图像创建 XImage 实例。
- 使用输出图像文件路径创建 FileStream 类的实例。
- 使用 FileStream 对象调用 Save() 方法保存图像
- 最后,使用 Close() 方法关闭 FileStream。
以下代码示例展示了如何使用 C# 从 PDF 文档中提取图像。
// 打开文档
Document pdfDocument = new Document("C:\\Files\\sample.pdf");
// 循环浏览页面
foreach (var page in pdfDocument.Pages)
{
int imageCounter = 1;
// 循环遍历所有图像
foreach (XImage image in page.Resources.Images)
{
// 为图像创建文件流
FileStream outputImage = new FileStream(String.Format("C:\\Files\\Page{0}_Image{1}.jpg", page.Number, imageCounter), FileMode.Create);
// 保存输出图像
image.Save(outputImage);
// 关闭流
outputImage.Close();
imageCounter++;
}
}
XImage 类表示图像 X-Object。它提供了几个处理图像的属性和方法。 XImage 类提供以下方法来保存图像对象:
- 保存(流) — Saves image data into stream as JPEG image.
- 保存(流,图像格式) — Saves image into stream with requested format.
- Save(Stream, Int32) 方法 — 将图像数据以指定分辨率的 JPEG 图像形式保存到流中。
- Save(Stream, ImageFormat, Int32) 方法 — 以请求的格式和指定的分辨率将图像保存到流中。
Page.Resources.Images 集合表示特定页面的图像集合。
获得免费许可证
您可以通过请求 免费的临时许可证 来试用该 API,而不受评估限制。
结论
在本文中,您学习了如何使用 C# 将 PDF 文件页面转换为图像。您还学习了如何以编程方式将 PDF 转换为 PNG、PDF 转换为 JPG、PDF 转换为 BMP 以及 PDF 转换为 TIFF。此外,您还学习了如何使用 C# 从 PDF 文件中提取图像。 API 还提供压缩选项、表格创建和操作、图形和图像功能、广泛的超链接功能、印章和水印任务、扩展的安全控制和自定义字体处理。您可以使用 文档 了解更多关于 Aspose.PDF for .NET API 的信息。如有任何歧义,请随时在 论坛 上与我们联系。