当前位置: 首页 > article >正文

C# 将图片转换为PDF文档

将图片(JPG、PNG)转换为PDF文件可以帮助我们更好地保存和分享图片。此外,PDF文件还具有强大的安全特性,将图片转换为PDF后,我们可以通过设置密码来文件内容不被泄露。本文将介绍如何将JPG/PNG图片转换为PDF文档。

文章目录

    • C# 将单张图片转换为PDF文档
    • C# 将多张图片转换到一个PDF文档

此教程可以使用第三方免费库 Free Spire.PDF for .NET,但需要注意该免费库有一定的页数限制。

开始前,我们可以通过以下链接下载产品包后手动添加引用,或者直接通过 NuGet 安装。
https://www.e-iceblue.cn/Downloads/Free-Spire-PDF-NET.html

C# 将单张图片转换为PDF文档

Free Spire.PDF for .NET提供的图片转PDF的方法是将加载的图片绘制到PDF页面上实现的,主要步骤如下:

  1. 创建一个 PDF文档,然后将其页边距设置为0。
  2. 使用 Image.FromFile() 方法加载图片,然后获取图片的宽度和高度。
  3. 通过 PdfDocument.Pages.Add() 方法添加一个与图片大小相同的PDF页面。
  4. 根据图片创建 PdfImage 对象。
  5. 使用 PdfPageBase.Canvas.DrawImage() 方法在PDF页面上绘制PdfImage对象。
  6. 使用 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");
        }
    }
}

图片转PDF

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

Free Spire.PDF for .NET也可以将一个文件夹中的多张图片绘制到一个PDF文档的不同页面上,主要步骤如下:

  1. 创建一个 PDF文档,然后将其页边距设置为0。
  2. 获取存储图片的文件夹。
  3. 遍历文件夹中的每个图像文件,并获取每一张图片的宽度和高度。
  4. 通过 PdfDocument.Pages.Add() 方法在PDF文档中添加与图片大小相同的PDF页面。
  5. 使用 PdfPageBase.Canvas.DrawImage() 方法在页面上绘制各个图片。
  6. 使用 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();
        }
    }
}

多张图片转换为PDF


– 如需在.NET 程序实现其他PDF文档的操作,如创建、读取、添加图片、表格等,可以从以下链接中查看相关教程:
https://www.e-iceblue.cn/spirepdfnet/spire-pdf-for-net-program-guide-content.html


http://www.kler.cn/a/463609.html

相关文章:

  • Deepseek v3 的笔记
  • 四、VSCODE 使用GIT插件
  • 安全运营 -- splunk restapi 最小权限
  • C++ —— 智能指针
  • 我用AI学Android Jetpack Compose之开篇
  • 学习C++:数组
  • 虹安信息技术有限公司数据泄露防护平台pushSetup存在SQL注入漏洞
  • 【Elasticsearch入门到落地】5、安装IK分词器
  • [最佳方法] 如何将视频从 Android 发送到 iPhone
  • Windows操作系统部署Tomcat详细讲解
  • LeetCode 3280.将日期转换为二进制表示:库函数实现或手动转换
  • 力扣第129题:求根到叶子节点数字之和 - C语言解法
  • 报错:nginx [emerg] open() etcnginxnginx.conf failed (2 No such file or directory)
  • 【网络协议】开放式最短路径优先协议OSPF详解(一)
  • WebRTC的三大线程
  • 设计模式の状态策略责任链模式
  • 【漫话机器学习系列】027.混淆矩阵(confusion matrix)
  • 计算机网络•自顶向下方法:DHCP、NAT、IPV6
  • 大模型WebUI:Gradio全解系列8——Additional Features:补充特性(下)
  • 如何将vCenter6.7升级7.0?
  • vSAN手动平衡磁盘
  • 对比一下Java和go的unsafe包
  • 【电路笔记】-德摩根定理
  • pycharm+anaconda创建项目
  • 短视频矩阵系统前端搭建技术解析,支持OEM
  • React之从0开始(1)