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

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

安装 Spire.PDF for .NET

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

cs 复制代码
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() 方法保存文档。

具体示例代码如下:

cs 复制代码
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 天的试用许可证。

相关推荐
我是坏垠3 小时前
Crypto、Cipher与Password:Java加密开发的三个核心概念
java·开发语言·python
white_ant3 小时前
JDK LTS 版本升级迁移注意事项大全
java·开发语言
Bobolink_3 小时前
跨境业务网络环境评估,“干净、一致、独享”三个关键指标
开发语言·网络·php·跨境网络·网络环境
你怎么知道我是队长4 小时前
JavaScript的变量和数据类型介绍
开发语言·javascript·ecmascript
xingke4 小时前
C 语言多文件编程:(一)头文件、extern、编译链接
c语言·开发语言·多文件
戮漠summer4 小时前
Missing Semester 计算机教育中缺失的一课 Lecture 01 Shell
开发语言·后端·scala
jinyishu_5 小时前
C++ string使用方法
开发语言·c++
EW Frontier5 小时前
三级跳突破864维动作空间——QMIX-Hierarchical多无人机协同通信方法全解析【附python代码】
开发语言·python·无人机·强化学习·通信资源分配
名字还没想好☜5 小时前
Next.js 中间件实战:鉴权、重定向与 A/B 分流
开发语言·前端·javascript·中间件·react·next.js
乐观勇敢坚强的老彭5 小时前
C++浮点数使用注意事项
开发语言·c++