C#实现将多张图片转换到一个PDF文档

 更新时间:2025年10月21日 14:53:23   作者:咕白m625  
在日常开发中,经常需要将多张图片合并为一个 PDF 文档,方便存储和分享,下面我们就来看看如何使用C# 结合 Spire.PDF for .NET 库实现这一功能,需要的可以参考一下

在日常开发中,经常需要将多张图片(如 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内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • 10个C#程序员经常用到的实用代码片段

    10个C#程序员经常用到的实用代码片段

    如果你是一个C#程序员,那么本文介绍的10个C#常用代码片段一定会给你带来帮助,从底层的资源操作,到上层的UI应用,这些代码也许能给你的开发节省不少时间。以下是原文:
    2015-09-09
  • 如何让C#、VB.NET实现复杂的二进制操作

    如何让C#、VB.NET实现复杂的二进制操作

    VB.NET和C#属于高级语言,对二进制位操作的支持不是很好,比如没有了移位运算等,用的时候确实很不方便,所以在闲暇之余我重新封装了一个用于C#、VB.NET的位操作类库,通过该类库可以实现数据移位、循环移位、转换为二进制、将二进制转换为数据等
    2013-07-07
  • Unity2D实现游戏回旋镖

    Unity2D实现游戏回旋镖

    这篇文章主要为大家详细介绍了Unity2D实现游戏回旋镖,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2021-09-09
  • C#求n个数中最大值和最小值的方法

    C#求n个数中最大值和最小值的方法

    这篇文章主要介绍了C#求n个数中最大值和最小值的方法,涉及C#中max及min方法的使用技巧,需要的朋友可以参考下
    2015-05-05
  • 谈C# using的用法与好处

    谈C# using的用法与好处

    这篇文章主要为大家详细介绍了C# using的用法与好处,具体分析了using指令调用的Dispose()方法,感兴趣的朋友可以参考一下
    2016-05-05
  • 使用C#合并PDF文档的实现步骤

    使用C#合并PDF文档的实现步骤

    在当今的数字化办公环境中,PDF文档已经成为信息交换和存档的标准格式,然而,在许多业务场景中,开发者会面临一个共同的需求:将多个PDF文档合并为一个,本文将深入探讨如何利用Spire.PDF for .NET 这一强大的工具,帮助C#开发者轻松实现PDF文档的合并,需要的朋友可以参考下
    2025-09-09
  • C#使用Spire.Doc for .NET获取并替换Word文档中的字体

    C#使用Spire.Doc for .NET获取并替换Word文档中的字体

    在企业文档处理流程中,C# Word 字体替换需求频繁出现,手动查找并替换 Word 文档字体,不仅耗费时间,还易遗漏,Spire.Doc for .NET 作为专业库,提供查找并替换字体功能,支持自动化批量操作,本文基于 Spire.Doc,分享精确 C# 代码,实现字体标准化,需要的朋友可以参考下
    2026-03-03
  • C#遍历DataSet控件实例总结

    C#遍历DataSet控件实例总结

    这篇文章主要介绍了C#遍历DataSet控件的用法,以实例形式总结归纳了常见的遍历方法,具有一定的参考学习价值,需要的朋友可以参考下
    2014-10-10
  • C#通过html调用WinForm的方法

    C#通过html调用WinForm的方法

    这篇文章主要介绍了C#通过html调用WinForm的方法,涉及html页面中使用JavaScript访问C#的相关技巧,需要的朋友可以参考下
    2016-04-04
  • c# 设置TeeChart控件的提示文本

    c# 设置TeeChart控件的提示文本

    这篇文章主要介绍了c# 如何设置TeeChart控件的提示文本,帮助大家更好的理解和使用c#,感兴趣的朋友可以了解下
    2020-11-11

最新评论