使用C#将多张图片合并为单个PDF的完整指南

本文详细介绍如何使用C#和Spire.PDF库将多张图片合并为单个PDF文档,包含完整的代码示例、核心实现步骤和高级技巧,适合批量处理图像和文档归档场景。

使用C#将多张图片合并为单个PDF

在日常开发中,经常需要将多张图片(如JPG、PNG、BMP等)合并为单个PDF文档以便存储和共享。本文将介绍如何使用C#结合Spire.PDF for .NET库实现此功能,该库提供简洁的API用于快速PDF操作,无需依赖Adobe Acrobat。

准备工作

Spire.PDF for .NET是一个专业的PDF处理库,支持创建、编辑和转换PDF文档。它还提供丰富的图像处理能力,可以轻松将图片插入PDF页面。

安装步骤: 建议通过NuGet包管理器安装:

  • 在Visual Studio中,右键点击项目并选择"管理NuGet包"
  • 搜索"Spire.PDF"并安装
  • 安装后,引用命名空间:using Spire.Pdf;using Spire.Pdf.Graphics;

核心实现步骤

功能需求

将指定文件夹中的所有图片(支持JPG、PNG、BMP等格式)按顺序合并为单个PDF,每张图片占据一页,页面尺寸适应图片尺寸。

C#代码示例

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
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),可以修改页面创建逻辑:

1
2
// 创建A4尺寸页面(210mm × 297mm)
PdfPageBase page = pdf.Pages.Add(PdfPageSize.A4);

2. 缩放图片以适应页面

如果图片尺寸超过页面,可以自动缩放:

1
2
3
4
5
6
7
// 计算缩放比例(确保图片在页面内完全显示)
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);

总结

使用Spire.PDF for .NET库,可以通过简单代码实现图片转PDF功能,相比传统方案(System.Drawing + GDI+)更加简洁易用。此方法适用于批量处理图片、生成电子相册、归档扫描文档等场景,并可根据实际需求扩展更多功能(如添加页码、水印等)。

comments powered by Disqus
使用 Hugo 构建
主题 StackJimmy 设计