图像(如 JPG、PNG、BMP)是常见的数据载体,而 PDF 格式则在安全性、压缩率和跨平台一致性方面更具优势。在.NET 开发中,开发者常常需要可靠的 C# 图片转 PDF 解决方案,以简化报表生成、文档归档和数字记录管理等工作流程。
本文将演示如何使用 Spire.PDF for .NET 在 C#/ASP.NET 中高效实现图片到 PDF 的转换操作。作为一款功能强大的库,Spire.PDF 凭借其稳定的性能和卓越的兼容性,能够有效简化图片转 PDF 的操作流程,为开发者提供便捷的解决方案。
项目设置
在开始编写将 JPG 或 PNG 等图像转换为 PDF 的代码前,需要先设置 C# 项目并添加 Spire.PDF 库。
步骤 1:创建新的 C# 项目
打开 Visual Studio,创建新的 C# 项目。可根据需求选择控制台应用程序、Windows 窗体应用程序或其他项目类型。
步骤 2:安装 Spire.PDF
有多种方式向项目中添加该 .NET PDF 库,常用方法是通过 NuGet 包管理器:
- 在 Visual Studio 的 “解决方案资源管理器” 中右键点击项目,选择 “管理 NuGet 包”。
- 在 NuGet 包管理器窗口中,搜索 “Spire.PDF”。
- 点击 “安装”,将最新版本的库添加到项目中。
安装完成后,即可在 C# 代码中引用所需的命名空间。
如何使用 C# 将图片转换为 PDF
Spire.PDF 没有提供直接的图片转 PDF 文件的方法,但可创建新的 PDF 文档并在特定页面的指定位置绘制图片。以下是两个转换单张图片或多张图片的代码示例。
将单张图片转换为 PDF
此示例展示如何将一张 JPG 图像转换为 PDF 文档,并使 PDF 页面与图像的尺寸完全匹配。
JPG 转 PDF 的 C# 代码:
using System.Drawing;
using Spire.Pdf;
using Spire.Pdf.Graphics;
namespace ConvertImageToPdf
{
class Program
{
static void Main(string[] args)
{
// 创建PdfDocument对象
PdfDocument pdf = new PdfDocument();
// 将页边距设置为0
pdf.PageSettings.SetMargins(0);
// 加载JPG图像
Image image = Image.FromFile(@"C:\Users\Administrator\Desktop\Flyer.jpg");
// 获取图像的宽度和高度
float width = image.PhysicalDimension.Width;
float height = image.PhysicalDimension.Height;
// 添加与图像尺寸相同的页面
PdfPageBase page = pdf.Pages.Add(new SizeF(width, height));
// 将JPG图片绘制在页面指定位置
PdfImage pdfImage = PdfImage.FromImage(image);
page.Canvas.DrawImage(pdfImage, 0, 0, pdfImage.Width, pdfImage.Height);
// 保存PDF文件
pdf.SaveToFile("ConvertToPdfWithSameSize.pdf");
}
}
}
代码解析:
- PdfDocument:表示 PDF 文件。
- PdfPageBase:表示PDF 页面。
- PdfImage.FromImage:将 Image 对象转换为 PdfImage 对象。
- DrawImage:在 PDF 页面上绘制图片。
转换结果:
将多张图片合并为单个 PDF
如果需要将多张图片合并为单个 PDF 文档,流程与转换单张图片类似,但需要通过循环处理每张图片。
将 JPG、PNG、TIFF、BMP 转换为 PDF 的 C# 代码:
using Spire.Pdf;
using Spire.Pdf.Graphics;
using System.Drawing;
namespace ConvertMultipleImagesIntoPdf
{
class Program
{
static void Main(string[] args)
{
// 创建PdfDocument对象
PdfDocument pdf = new PdfDocument();
// 将页面边距设置为0
pdf.PageSettings.SetMargins(0);
// 指定要转换的图片
string[] imagePaths = { "Image-1.png", "Image-2.jpg", "Image-3.bmp", "Image-4.tiff" };
// 遍历每张图片
foreach (string path in imagePaths)
{
// 加载特定图像
Image image = Image.FromFile(path);
// 获取图像的宽度和高度
float width = image.PhysicalDimension.Width;
float height = image.PhysicalDimension.Height;
// 添加与图像尺寸相同的页面
PdfPageBase page = pdf.Pages.Add(new SizeF(width, height));
// 基于图片创建PdfImage对象
PdfImage pdfImage = PdfImage.FromImage(image);
// 在页面的指定位置绘制图片
page.Canvas.DrawImage(pdfImage, 0, 0, pdfImage.Width, pdfImage.Height);
}
// 保存PDF文件
pdf.SaveToFile("CombineImagesToPdf.pdf");
pdf.Dispose();
}
}
}
这段 C# 代码会遍历不同格式的图片文件数组,加载每张图像并将其添加到 PDF 文档的新页面中,最后保存包含所有图像的PDF文档。
转换效果:
图片转 PDF 的自定义设置
调整页面设置
在转换过程中,可根据图片的特性自定义 PDF 页面属性,如方向、边距和尺寸:
// 创建PDF文档
PdfDocument pdf = new PdfDocument();
// 设置页面方向
pdf.PageSettings.Orientation = PdfPageOrientation.Landscape;
// 设置页边距(以点为单位,1点=1/72英寸)
pdf.PageSettings.SetMargins(20);
// 设置页面尺寸
pdf.PageSettings.Size = PdfPageSize.A4;
调整图片尺寸以适配PDF页面
如果需要保持固定的 PDF 页面尺寸,可缩放图像使其适配页面:
// 设置固定页面尺寸(如A4)
PdfPageBase page = pdf.Pages.Add(PdfPageSize.A4);
// 加载图像
Image image = Image.FromFile("sample.jpg");
// 获取页面的宽度和高度
float pageWidth = page.Canvas.ClientSize.Width;
float pageHeight = page.Canvas.ClientSize.Height;
// 缩放图像
float scale = Math.Min(pageWidth / image.Width, pageHeight / image.Height);
float scaledWidth = image.Width * scale;
float scaledHeight = image.Height * scale;
// 在页面上绘制缩放后的图像
page.Canvas.DrawImage(PdfImage.FromImage(image), 0, 0, scaledWidth, scaledHeight);
常见问题(TIFF 转 PDF、SVG 转 PDF)
问题 1:Spire.PDF 支持哪些图片格式?
答:Spire.PDF 支持所有主流图像格式:
- JPG/JPEG
- PNG
- BMP
- TIFF
- GIF
- EMF
- WMF
确保输入图片为受支持的格式,以实现无缝转换。
问题 2:能否将多页 TIFF 图片转换为 PDF 文件?
答:可以!通过遍历 TIFF 帧进行转换。完整代码示例可查看:C# 将多页 TIFF 图像转换为 PDF 文件。
问题 3:能否将 SVG 图像转换为 PDF 文件?
答:可以!可使用 LoadFromSvg() 加载 SVG 文件,然后通过 SaveToFile (String, FileFormat.PDF) 方法将其保存为 PDF。
using Spire.Pdf;
namespace SVGtoPDF
{
class Program
{
static void Main(string[] args)
{
// 创建PdfDocument对象
PdfDocument doc = new PdfDocument();
// 加载示例SVG文件
doc.LoadFromSvg("示例.svg");
// 将SVG保存为PDF文档
doc.SaveToFile("SVG转PDF.pdf", FileFormat.PDF);
doc.Dispose();
}
}
}
问题 4:哪里可以找到图片转 PDF 的VB.NET代码?
答:Spire.PDF 完全支持VB.NET。可通过常见代码转换工具(如 Telerik Code Converter)将上述 C# 代码示例转换为VB.NET代码。
结论
Spire.PDF for .NET 使得通过 C# 实现图片转 PDF 的操作变得简单直观。本教程详细展示了以下核心功能:
- 图像批量处理:支持将单张图片或多张图片快速转换为 PDF 文档,满足不同场景的批量处理需求。
- PDF 格式定制:可自定义输出 PDF 的页面尺寸(如 A4、Letter 等)、边距参数及内容布局,实现精细化格式控制。
通过本教程提供的实操示例,开发者能够轻松将图片转 PDF 功能无缝集成至.NET 应用程序中,大幅提升文档处理效率。