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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/943814.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

计算机的错误计算(一百九十三)

摘要 用两个大模型化简计算 其中有关数字取弧度,结果保留5位有效数字。一个大模型进行了一次化简,另外一个大模型没有化简。两个大模型​​​​​均给出错误结果。 例1. 化简计算 其中有关数字取弧度,结果保留5位有效数字。 下面是与一个…

大模型-ChatGLM-6B模型部署与微调记录

大模型-ChatGLM-6B模型部署与微调记录 模型权重下载: 登录魔塔社区:https://modelscope.cn/models/ZhipuAI/chatglm2-6b 拷贝以下代码执行后,便可快速权重下载到本地 # 备注:最新模型版本要求modelscope > 1.9.0 # pip instal…

梳理你的思路(从OOP到架构设计)_介绍Android的Java层应用框架01

目录 1、传统无框架 2、 单层框架 3、 复合型框架 4、 双层框架 1、传统无框架 传统上,在没有框架的环境里,应用程序(Application,简称AP或App)会调用平台(如Linux或Windows等)平台的函数,如下图所示: 由于控制权掌握在App开…

基于SpringBoot在线音乐系统平台功能实现十七

一、前言介绍: 1.1 项目摘要 随着互联网技术的迅猛发展和普及,人们对音乐的获取和欣赏方式发生了巨大改变。传统的音乐播放方式,如CD、磁带或本地下载的音乐文件,已经不能满足用户日益增长的需求。用户更希望通过网络直接获取各…

SpringBoot配置文件、热部署、YAML语法、配置文件值注入

SpringBoot的配置文件 文章目录 SpringBoot的配置文件1.SpringBoot的热部署2.配置文件2.1配置文件的作用2.2YAML配置文件:2.3YAML 与 JSON 和 XML 的对比 3.YAML语法3.1键值对3.2值的写法3.3对象、Map(属性和值)(键值对&#xff0…

Linux | 零基础Ubuntu安装部署 Nginx服务

目录 介绍 安装部分 更新 安装 查看状态 测试网页 配置部分 备份默认文件 编辑文件 创建站点文件夹 编辑默认文件 Nginx检测 重新加载Nginx 测试网站 介绍 Nginx (engine x) 是一个高性能的HTTP和反向代理web服务器,同时也提供了IMAP/POP3/SMTP服务。…

云边端一体化架构

云边端一体化架构是一种将云计算、边缘计算和终端设备相结合的分布式计算模型。该架构旨在通过优化资源分配和数据处理流程,提供更高效、更低延迟的服务体验。 下面是对这个架构的简要说明: 01云计算(Cloud Computing) — 作为中心…

springboot 工程使用proguard混淆

在 Maven 构建的 Spring Boot 项目中使用 ProGuard 进行代码混淆时,需要正确配置 Maven 插件和 ProGuard 的混淆规则。由于 Spring Boot 项目通常会依赖大量的反射机制和动态代理,因此必须特别小心确保这些部分在混淆过程中不会被破坏。 步骤 1&#xf…

vue3和springboot使用websocket通信

前端端口&#xff1a;9090 后端端口&#xff1a;8080 vue3 引入依赖&#xff1a; npm install sockjs-client stomp/stompjs vue页面 <template><div><h1>WebSocket 示例</h1><button click"sendMessage">发送消息</button>…

【HarmonyOS】鸿蒙arrayBuffer和Uint8Array互相转化

【HarmonyOS】鸿蒙arrayBuffer和Uint8Array互相转化 前言 ArrayBuffer ArrayBuffer内部包含一块Native内存&#xff0c;该ArrayBuffer的JS对象壳被分配在虚拟机本地堆&#xff08;LocalHeap&#xff09;。与普通对象一样&#xff0c;需要经过序列化与反序列化拷贝传递&#x…

Linux 搭建 nginx+keepalived 高可用 | Nginx反向代理

注意&#xff1a;本文为 “Linux 搭建 nginxkeepalived (主备双主模式) 高可用 | Nginx反向代理” 相关文章合辑。 KeepalivedNginx实现高可用&#xff08;HA&#xff09; xyang0917 于 2016-09-17 00:24:15 发布 keepalived 的 HA 分为抢占模式和非抢占模式&#xff0c;抢占…

Cocos Creator 试玩广告开发 第二弹

上一篇的项目是2d的&#xff0c;现在谈谈对于3d试玩项目的一些经历。 相对于2d来说&#xff0c;3d的项目更接近于Unity的开发&#xff0c;但是也有很多不一样的地方&#xff0c;具体的也可以参考Cocos给他官方示例。 Unity 开发者入门 Cocos Creator 快速指南 | Cocos Creator…

输入框去掉角标

前言 正常情况下&#xff0c;HTML textarea 多行文本输入框会存如下图所示图标&#xff0c; 用户可拉动它改变高度&#xff0c;这是我们不想看到的&#xff0c;所以要去掉它。 去掉后&#xff1a; 解决方案 设置 resize 属性即可&#xff0c;如下代码所示&#xff1a; <…

ABAP实战案例-选择屏幕SUBSCREEN中搜索帮助失效的解决方法

案列背景&#xff1a; 选择屏幕作为SUBSCREEN时&#xff0c;搜索条件中的域值或者F4的搜索帮助会失效。 优化前示例与效果截图&#xff1a; * * SELECTION-SCREEN " 选择屏幕定义 *SELECTION-SCREEN BEGIN OF SCREEN 900 AS SUBSCREEN.SELECTION-SCREEN BEGIN OF BL…

顶顶通呼叫中心中间件mod_cti模块安全增强,预防盗打风险(mod_cti基于FreeSWITCH)

文章目录 前言联系我们mod_cti版本支持安全加强说明 前言 FreeSWITCH暴露在公网最大的风险就是被不法之人盗打 出现盗打的主要原因以下几点&#xff1a; 分机密码太简单或者密码泄露了拨号方案配置不合理sofia配置错误 所以我们给顶顶通呼叫中心中间件添加了安全加强功能&am…

DDSort-简单实用的jQuery拖拽排序插件

DDSort.js是一款简单实用的jQuery拖拽排序插件。通过该插件你可以任意拖动页面中元素&#xff0c;并放置到指定的地方。DDSort.js插件实用简单&#xff0c;兼容IE8浏览器。 在线预览 下载 使用方法 实用该拖拽排序插件需要在页面中引入jquery文件和ddsort.js文件。 <scri…

PHP实现登录和注册(附源码)

前言 本博客主要讲述利用php环境实现一个简单的前后端结合的用户登录和注册功能。phpstudy是PHP调试环境的集成包&#xff0c;该程序包集成了 ApachePHPMySQLphpMyAdmin 等多个工具&#xff0c;是很好用的调试环境的程序集成包。 目录 前言 1. 准备工作 1.1 工具 1.2 php…

蓝牙BLE开发——解决iOS设备获取MAC方式

解决iOS设备获取MAC方式 uniapp 解决 iOS 获取 MAC地址&#xff0c;在Android、iOS不同端中互通&#xff0c;根据MAC 地址处理相关的业务场景&#xff1b; 文章目录 解决iOS设备获取MAC方式监听寻找到新设备的事件BLE工具效果图APP监听设备返回数据解决方式ArrayBuffer转16进制…

大表:适用于结构化数据的分布式存储系统

大家觉得有意义和帮助记得及时关注和点赞!!! 译者序摘要1 引言2 数据模型 2.1 行&#xff08;Row&#xff09;2.2 Column Families&#xff08;列族&#xff09; 2.2.1 设计2.2.2 column key 的格式&#xff1a;family:qualifier2.2.3 访问控制和磁盘/内存记账&#xff08;acco…

【游戏设计原理】32 - 消费者剩余

1. 如何理解消费者剩余原理&#xff1f; 消费者剩余是一种经济学概念&#xff0c;表示消费者愿意为商品支付的最大金额与实际支付金额之间的差额。 简单来说&#xff0c;消费者剩余衡量了消费者从交易中获得的“额外价值”或“剩余利益”。 在传统商业模式下&#xff0c;由于…