news 2026/6/25 4:54:34

如何使用C#代码将多张图片整合为一个PDF文档

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
如何使用C#代码将多张图片整合为一个PDF文档

如果你有多张图片需要合并成一个文件以便于分发或存储,将它们转换为单一的 PDF 文档是一个非常有效的解决方案。此过程不仅可以节省空间,还能确保所有图片被整合在同一个文件中,方便共享或传输。本文将向你介绍如何使用 Spire.PDF for .NET,在 C# 和 VB.NET 中将多张图片合并生成一个 PDF 文档。

安装 Spire.PDF for .NET

首先,你需要将 Spire.PDF for .NET 包中包含的 DLL 文件添加为 .NET 项目的引用。你可以通过以下链接下载 DLL 文件,或通过 NuGet 进行安装。

PM> Install-Package Spire.PDF

将多张图片合并为一个 PDF

为了将文件夹中的所有图片转换为一个 PDF,我们需要遍历每张图片,为 PDF 添加与图片尺寸相同的新页面,然后将图片绘制到该页面上。以下是具体步骤:

  1. 创建一个PdfDocument对象。

  2. 使用PdfDocument.PageSettings.SetMargins()方法将页面边距设置为零。

  3. 获取存储图片的文件夹路径。

  4. 遍历文件夹中的每个图片文件,并获取每张图片的宽度和高度。

  5. 使用PdfDocument.Pages.Add()方法,为 PDF 文档添加一个与图片尺寸相同的新页面。

  6. 使用PdfPageBase.Canvas.DrawImage()方法,将图片绘制到页面上。

  7. 使用PdfDocument.SaveToFile()方法保存文档。

具体示例代码如下:

using Spire.Pdf; using Spire.Pdf.Graphics; using System.Drawing; namespace ConvertMultipleImagesIntoPdf { class Program { static void Main(string[] args) { //创建 PdfDocument 对象 PdfDocument doc = new PdfDocument(); //将页面边距设置为 0 doc.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; //添加一个与图片尺寸相同的页面 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("CombinaImagesToPdf.pdf"); doc.Dispose(); } } }

申请临时许可证

如果您想去除生成文档中的评估提示,或解除功能限制,请为自己申请一个为期 30 天的试用许可证。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/6/25 1:32:26

力扣 22. 括号生成:C++ 实现回溯 + 动态规划双解法,面试高频题必掌握

在算法面试中,括号生成问题是经典的字符串组合题型,力扣第 22 题「括号生成」更是高频考点。题目要求给定括号对数 n,生成所有有效的括号组合,看似简单却能深度考察对回溯、动态规划等核心算法思想的掌握。今天用 C 实现两种最优解…

作者头像 李华
网站建设 2026/6/24 19:28:02

【开题答辩全过程】以 基于Django的大学生理财及记账系统设计与实现为例,包含答辩的问题和答案

个人简介一名14年经验的资深毕设内行人,语言擅长Java、php、微信小程序、Python、Golang、安卓Android等开发项目包括大数据、深度学习、网站、小程序、安卓、算法。平常会做一些项目定制化开发、代码讲解、答辩教学、文档编写、也懂一些降重方面的技巧。感谢大家的…

作者头像 李华
网站建设 2026/6/25 1:37:05

Rust的移动语义

在 Rust 中,默认是移动语义,而不是传统的值传递或引用传递。这是 Rust 最重要的特性之一,理解所有权系统很关键。 基本规则 fn main() {let s1 String::from("hello"); // s1 拥有字符串let s2 s1; // 所有…

作者头像 李华
网站建设 2026/6/25 22:25:01

生物毒性在线分析仪:监测水体毒性的利器

生物毒性在线分析仪是一种用于实时监测环境中生物毒性的仪器设备,可快速、自动地检测水样等对生物的急性综合毒性,为环境监测和安全保障提供重要数据支持。一、工作原理 生物毒性在线分析仪主要利用发光细菌在新陈代谢时发出的光强变化来评估样品的毒性。…

作者头像 李华
网站建设 2026/6/24 7:50:15

3倍效率!用AI自动修复Vue属性传递问题

快速体验 打开 InsCode(快马)平台 https://www.inscode.net输入框内输入如下内容: 创建一个对比实验:左侧展示开发者手动调试Vue非props属性问题的典型步骤(约10步),右侧展示使用快马AI一键识别和修复同样问题的过程。要求:1) 统…

作者头像 李华