在日常开发中,经常需要将多张图片(如 jpg、png、bmp 等)合并为一个 pdf 文档,方便存储和分享。本文将介绍如何使用 c# 结合 spire.pdf for .net 库实现这一功能,该库提供了简洁的 api,无需依赖 adobe acrobat 即可快速操作 pdf。
一、准备工作
spire.pdf for .net是一个专业的pdf处理类库,支持创建、编辑、转换pdf文档,同时提供了丰富的图片处理能力,可轻松将图片插入pdf页面。
安装步骤如下:
推荐通过 nuget 包管理器安装:
- 在 visual studio 中右键点击项目,选择“管理 nuget 包”
- 搜索“spire.pdf”并安装
- 安装完成后,引用命名空间:
using spire.pdf;和using spire.pdf.graphics;
二、核心实现步骤
功能需求
将指定文件夹中的所有图片(支持jpg、png、bmp等格式)按顺序合并为一个pdf,每张图片占一页,且页面大小自适应图片尺寸。
完整代码示例
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);
// 获取图片存放的文件夹
directoryinfo folder = new directoryinfo(@"c:\users\administrator\desktop\images");
// 遍历图片
foreach (fileinfo file in folder.getfiles())
{
image image = image.fromfile(file.fullname);
// 获取图片尺寸
float width = image.physicaldimension.width;
float height = image.physicaldimension.height;
// 添加与图片大小相同的pdf页面
pdfpagebase page = pdf.pages.add(new sizef(width, height));
// 将图片绘制到页面
pdfimage pdfimage = pdfimage.fromimage(image);
page.canvas.drawimage(pdfimage, 0, 0, pdfimage.width, pdfimage.height);
}
// 保存pdf文档
pdf.savetofile("combinaimagestopdf.pdf");
pdf.dispose();
}
}
}
代码解析
- 参数配置:指定图片文件夹路径,可根据实际需求修改。
- pdf页面创建:创建一个与图片尺寸完全相同的 pdf 页面(确保页面大小适配图片,无拉伸或裁剪)
- 图片绘制:
page.canvas.drawimage()从页面左上角 (0,0) 开始绘制图片,尺寸与图片原始尺寸一致,最终效果是图片完全覆盖页面。 - 释放资源:
dispose()手动释放 pdfdocument 对象占用的资源。
三、扩展技巧
1. 固定pdf页面大小
如果需要所有页面使用固定尺寸(如a4),可修改页面创建逻辑:
// 创建a4尺寸页面(210mm×297mm) pdfpagebase page = pdf.pages.add(pdfpagesize.a4);
2. 图片缩放适应页面
若图片尺寸超过页面,可自动缩放:
// 计算缩放比例(确保图片完全显示在页面内) float scalex = page.canvas.clientsize.width / pdfimage.width; float scaley = page.canvas.clientsize.height / pdfimage.height; float scale = math.min(scalex, scaley); // 按比例缩放绘制 page.canvas.drawimage(pdfimage, x, y, pdfimage.width * scale, pdfimage.height * scale);
四、方法补充
c# 将单张图片转换为pdf文档
free spire.pdf for .net提供的图片转pdf的方法是将加载的图片绘制到pdf页面上实现的,主要步骤如下:
- 创建一个 pdf文档,然后将其页边距设置为0。
- 使用 image.fromfile() 方法加载图片,然后获取图片的宽度和高度。
- 通过 pdfdocument.pages.add() 方法添加一个与图片大小相同的pdf页面。
- 根据图片创建 pdfimage 对象。
- 使用 pdfpagebase.canvas.drawimage() 方法在pdf页面上绘制pdfimage对象。
- 使用 pdfdocument.savetofile() 方法保存生成的 pdf 文档。
示例代码:
ing system.drawing;
using spire.pdf;
using spire.pdf.graphics;
namespace convertimagetopdfwithsamesize
{
class program
{
static void main(string[] args)
{
//创建pdfdocument对象
pdfdocument pdf = new pdfdocument();
//将页边距设为0
pdf.pagesettings.setmargins(0);
//加载图片
image image = image.fromfile(@"c:\users\administrator\desktop\work.jpg");
//获取图片尺寸
float width = image.physicaldimension.width;
float height = image.physicaldimension.height;
//创建pdfimage对象
pdfimage pdfimage = pdfimage.fromfile(@"c:\users\administrator\desktop\work.jpg");
//添加一个与图片大小相同的pdf页面
pdfpagebase page = pdf.pages.add(new sizef(width, height));
//在页面上绘制图片
page.canvas.drawimage(pdfimage, 0, 0, pdfimage.width, pdfimage.height);
//保存pdf
pdf.savetofile("图片转pdf.pdf");
}
}
}
c# 将多张图片转换到一个pdf文档
free spire.pdf for .net也可以将一个文件夹中的多张图片绘制到一个pdf文档的不同页面上,主要步骤如下:
- 创建一个 pdf文档,然后将其页边距设置为0。
- 获取存储图片的文件夹。
- 遍历文件夹中的每个图像文件,并获取每一张图片的宽度和高度。
- 通过 pdfdocument.pages.add() 方法在pdf文档中添加与图片大小相同的pdf页面。
- 使用 pdfpagebase.canvas.drawimage() 方法在页面上绘制各个图片。
- 使用 pdfdocument.savetofile() 方法保存生成的pdf文档。
示例代码:
using spire.pdf;
using spire.pdf.graphics;
using system.drawing;
using system.io;
namespace convertmultipleimagesintopdf
{
class program
{
static void main(string[] args)
{
//创建pdfdocument对象
pdfdocument pdf = new pdfdocument();
//将页边距设为0
pdf.pagesettings.setmargins(0);
//获取存储图片的文件夹
directoryinfo folder = new directoryinfo(@"c:\users\administrator\desktop\图片");
//遍历文件夹中的图片
foreach (fileinfo file in folder.getfiles())
{
//加载图片
image image = image.fromfile(file.fullname);
//获取图片尺寸
float width = image.physicaldimension.width;
float height = image.physicaldimension.height;
//添加与图片大小相同的pdf页面
pdfpagebase page = pdf.pages.add(new sizef(width, height));
//创建pdfimage对象
pdfimage pdfimage = pdfimage.fromfile(file.fullname);
//在页面上绘制图片
page.canvas.drawimage(pdfimage, 0, 0, pdfimage.width, pdfimage.height);
}
//保存pdf
pdf.savetofile("多图转pdf.pdf");
pdf.dispose();
}
}
}
结语:通过 spire.pdf for .net 库,使用简单代码即可实现图片转 pdf 的功能,相比传统方案(system.drawing + gdi+)更简洁易用。该方法适用于批量处理图片、生成电子相册、归档扫描件等场景,可根据实际需求扩展更多功能(如添加页码、水印等)。
到此这篇关于c#实现将多张图片转换到一个pdf文档的文章就介绍到这了,更多相关c#多张图片转pdf内容请搜索代码网以前的文章或继续浏览下面的相关文章希望大家以后多多支持代码网!
发表评论