C#教程

关注公众号 jb51net

关闭
首页 > 软件编程 > C#教程 > C#多张图片转PDF

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

作者:咕白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 包管理器安装:

二、核心实现步骤

功能需求

将指定文件夹中的所有图片(支持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();
        }
    }
}

代码解析

三、扩展技巧

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页面上实现的,主要步骤如下:

示例代码:

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文档的不同页面上,主要步骤如下:

示例代码:

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内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

您可能感兴趣的文章:
阅读全文