图片文件格式可以在日常中大多数设备之间轻松共享。但是,在某些情况下,需要使用更专业的格式(例如 PDF)来替代图片。在本文中,您将学习如何在 C# 和 VB.NET 中使用 Spire.PDF for .NET 将图像转换为 PDF。
Spire.PDF 不提供直接将图片转换为 PDF 的方法。但是您可以创建一个新的 PDF 文档并在某个页面的指定位置绘制图片。根据生成的 PDF 页面大小是否与图片大小相等,本文可分为以下两个子主题。
安装 Spire.PDF for .NET
首先,您需要添加 Spire.PDF for .NET 包中包含的 DLL 文件作为.NET项目中的引用。DLL 文件可以从此链接下载或通过 NuGet 安装。
PM> Install-Package Spire.PDF
在指定位置添加图片到 PDF
以下是使用 Spire.PDF for .NET 将图片添加为新 PDF 文档的主要步骤。
- 创建一个再 PdfDocument 对象。
- 使用 PdfDocument.PageSettings.SetMargins() 方法设置页边距。
- 使用 PdfDocument.Pages.Add() 方法添加页面。
- 使用 Image.FromFile() 方法加载图像,并获取图像的宽度和高度。
- 如果图像宽度大于页面(内容区域)宽度,请调整图像大小以使其适合页面宽度。
- 根据缩放后的图像或原始图像创建一个 PdfImage 对象。
- 使用 PdfPageBase.Canvas.DrawImage() 方法在第一页 (0, 0) 处绘制 PdfImage 对象。
- 使用 PdfDocument.SaveToFile() 方法将文档保存为 PDF 文件。
- C#
- VB.NET
using System.Drawing;
using Spire.Pdf;
using Spire.Pdf.Graphics;
namespace AddImageToPdf
{
class Program
{
static void Main(string[] args)
{
//创建一个PdfDocument对象
PdfDocument doc = new PdfDocument();
//设置页边距
doc.PageSettings.SetMargins(20);
//添加页面
PdfPageBase page = doc.Pages.Add();
//加载图片
Image image = Image.FromFile(@"C:\Users\Administrator\Desktop\sample.jpg");
//获取图片的高度和宽度
float width = image.PhysicalDimension.Width;
float height = image.PhysicalDimension.Height;
//声明一个 PdfImage 变量
PdfImage pdfImage;
//如果图片宽度大于页面宽度
if (width > page.Canvas.ClientSize.Width)
{
//调整图片大小以适合页面宽度
float widthFitRate = width / page.Canvas.ClientSize.Width;
Size size = new Size((int)(width / widthFitRate), (int)(height / widthFitRate));
Bitmap scaledImage = new Bitmap(image, size);
//将缩放后的图片加载到 PdfImage 对象
pdfImage = PdfImage.FromImage(scaledImage);
}
else
{
//将原始图片加载到 PdfImage 对象
pdfImage = PdfImage.FromImage(image);
}
//在 (0, 0) 处绘制图片
page.Canvas.DrawImage(pdfImage, 0, 0, pdfImage.Width, pdfImage.Height);
//保存文档
doc.SaveToFile("AddImage.pdf");
}
}
}
Imports System.Drawing
Imports Spire.Pdf
Imports Spire.Pdf.Graphics
Namespace AddImageToPdf
Class Program
Shared Sub Main(ByVal args() As String)
'创建一个PdfDocument对象
Dim doc As PdfDocument = New PdfDocument()
'设置页边距
doc.PageSettings.SetMargins(20)
'添加页面
Dim page As PdfPageBase = doc.Pages.Add()
'加载图片
Dim image As Image = Image.FromFile("C:\Users\Administrator\Desktop\sample.jpg")
'获取图片的高度和宽度
Dim width As single = image.PhysicalDimension.Width
Dim height As single = image.PhysicalDimension.Height
'声明一个 PdfImage 变量
Dim pdfImage As PdfImage
'如果图片宽度大于页面宽度
If width > page.Canvas.ClientSize.Width Then
'调整图片大小以适合页面宽度
Dim widthFitRate As single = width / page.Canvas.ClientSize.Width
Dim size As Size = New Size(CType((width / widthFitRate),(Integer)(height / widthFitRate), Integer))
Dim scaledImage As Bitmap = New Bitmap(image,size)
'将缩放后的图片加载到 PdfImage 对象
pdfImage = PdfImage.FromImage(scaledImage)
Else
'将原始图片加载到 PdfImage 对象
pdfImage = PdfImage.FromImage(image)
End If
'在 (0, 0) 处绘制图片
page.Canvas.DrawImage(pdfImage, 0, 0, pdfImage.Width, pdfImage.Height)
'保存文档
doc.SaveToFile("AddImage.pdf")
End Sub
End Class
End Namespace
将图片转换为等高等宽的 PDF
以下是使用 Spire.PDF for .NET 将图片转换为等高等宽的 PDF 的步骤。
- 创建一个 PdfDocument 对象。
- 使用 PdfDocument.PageSettings.SetMargins() 方法将页边距设置为零。
- 使用 Image.FromFile() 方法加载图片,并获取图片的宽度和高度。
- 使用 PdfDocument.Pages.Add() 方法添加与图片同等大小的页面到 PDF。
- 基于图片创建一个 PdfImage 对象。
- 使用 PdfPageBase.Canvas.DrawImage() 方法从坐标 (0, 0) 在第一页上绘制 PdfImage 对象。
- 使用 PdfDocument.SaveToFile()方法将文档保存为 PDF 文件。
- C#
- VB.NET
using System.Drawing;
using Spire.Pdf;
using Spire.Pdf.Graphics;
namespace ConvertImageToPdfWithSameSize
{
class Program
{
static void Main(string[] args)
{
//创建一个PdfDocument对象
PdfDocument doc = new PdfDocument();
//设置页边距为0
doc.PageSettings.SetMargins(0);
//加载图片
Image image = Image.FromFile(@"C:\Users\Administrator\Desktop\sample.jpg");
//获取图片高度和宽度
float width = image.PhysicalDimension.Width;
float height = image.PhysicalDimension.Height;
//添加与图片大小相同的页面
PdfPageBase page = doc.Pages.Add(new SizeF(width, height));
//根据图片创建 PdfImage 对象
PdfImage pdfImage = PdfImage.FromImage(image);
//在页面的 (0, 0) 处绘制图片
page.Canvas.DrawImage(pdfImage, 0, 0, pdfImage.Width, pdfImage.Height);
//保存文档
doc.SaveToFile("ConvertPdfWithSameSize.pdf");
}
}
}
Imports System.Drawing
Imports Spire.Pdf
Imports Spire.Pdf.Graphics
Namespace ConvertImageToPdfWithSameSize
Class Program
Shared Sub Main(ByVal args() As String)
'创建一个PdfDocument对象
Dim doc As PdfDocument = New PdfDocument()
'设置页边距为0
doc.PageSettings.SetMargins(0)
'加载图片
Dim image As Image = Image.FromFile("C:\Users\Administrator\Desktop\sample.jpg")
'获取图片高度和宽度
Dim width As single = image.PhysicalDimension.Width
Dim height As single = image.PhysicalDimension.Height
'添加与图片大小相同的页面
Dim page As PdfPageBase = doc.Pages.Add(New SizeF(width,height))
'根据图片创建 PdfImage 对象
Dim pdfImage As PdfImage = PdfImage.FromImage(image)
'在页面的 (0, 0) 处绘制图片
page.Canvas.DrawImage(pdfImage, 0, 0, pdfImage.Width, pdfImage.Height)
'保存文档
doc.SaveToFile("ConvertPdfWithSameSize.pdf")
End Sub
End Class
End Namespace
申请临时 License
如果您希望删除结果文档中的评估消息,或者摆脱功能限制,请 该Email地址已收到反垃圾邮件插件保护。要显示它您需要在浏览器中启用JavaScript。 获取有效期 30 天的临时许可证。