PDF控件Spire.PDF for .NET【转换】演示:将多个图像转换为单个 PDF

如果您想要将多个图像合并为一个文件以便于分发或存储,将它们转换为单个 PDF 文档是一个很好的解决方案。这一过程不仅节省空间,还确保所有图像都保存在一个文件中,方便共享或传输。在本文中,您将学习如何使用Spire.PDF for .NET 在 C# 和 VB.NET 中将多个图像合并到单个 PDF 文档中

Spire.Doc 是一款专门对 Word 文档进行操作的 类库。在于帮助开发人员无需安装 Microsoft Word情况下,轻松快捷高效地创建、编辑、转换和打印 Microsoft Word 文档。拥有近10年专业开发经验Spire系列办公文档开发工具,专注于创建、编辑、转换和打印Word/PDF/Excel等格式文件处理,小巧便捷。 

E-iceblue 功能类库Spire 系列文档处理组件均由中国本土团队研发,不依赖第三方软件,不受其他国家的技术或法律法规限制,同时适配国产操作系统如中科方德、中标麒麟等,兼容国产文档处理软件 WPS(如 .wps/.et/.dps 等格式 (qun:767755948)

Spire.PDF for.net下载   Spire.PDF for java下载

安装适用于 .NET 的 Spire.PDF

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

PM> Install-Package Spire.PDF
使用 C# 和 VB.NET 将多个图像合并为单个 PDF

为了将文件夹中的所有图像转换为 PDF,我们迭代每个图像,向 PDF 添加一个与图像大小相同的新页面,然后将图像绘制到新页面上。以下是详细步骤。

  • 创建一个PdfDocument对象。
  • 使用PdfDocument.PageSettings.SetMargins()方法将页边距设置为零。
  • 获取存储图像的文件夹。
  • 遍历文件夹中的每个图像文件,并获取特定图像的宽度和高度。
  • 使用PdfDocument.Pages.Add()方法将与图像具有相同宽度和高度的新页面添加到 PDF 文档中。
  • 使用PdfPageBase.Canvas.DrawImage()方法在页面上绘制图像。
  • 使用PdfDocument.SaveToFile()方法保存文档。

【C#】

using Spire.Pdf;
using Spire.Pdf.Graphics;
using System.Drawing;namespace ConvertMultipleImagesIntoPdf
{
class Program
{
static void Main(string[] args)
{
//Create a PdfDocument object
PdfDocument doc = new PdfDocument();//Set the page margins to 0
doc.PageSettings.SetMargins(0);//Get the folder where the images are stored
DirectoryInfo folder = new DirectoryInfo(@"C:\Users\Administrator\Desktop\Images");//Iterate through the files in the folder
foreach (FileInfo file in folder.GetFiles())
{
//Load a particular image
Image image = Image.FromFile(file.FullName);//Get the image width and height
float width = image.PhysicalDimension.Width;
float height = image.PhysicalDimension.Height;//Add a page that has the same size as the image
PdfPageBase page = doc.Pages.Add(new SizeF(width, height));//Create a PdfImage object based on the image
PdfImage pdfImage = PdfImage.FromImage(image);//Draw image at (0, 0) of the page
page.Canvas.DrawImage(pdfImage, 0, 0, pdfImage.Width, pdfImage.Height);
}//Save to file
doc.SaveToFile("CombinaImagesToPdf.pdf");
doc.Dispose();
}
}
}

【VB.NET】

Imports Spire.Pdf
Imports Spire.Pdf.Graphics
Imports System.DrawingNamespace ConvertMultipleImagesIntoPdf
Class Program
Shared Sub Main(ByVal args() As String)
'Create a PdfDocument object
Dim doc As PdfDocument = New PdfDocument()'Set the page margins to 0
doc.PageSettings.SetMargins(0)'Get the folder where the images are stored
Dim folder As DirectoryInfo = New DirectoryInfo("C:\Users\Administrator\Desktop\Images")'Iterate through the files in the folder
Dim file As FileInfo
For Each file In folder.GetFiles()
'Load a particular image
Dim image As Image = Image.FromFile(file.FullName)'Get the image width and height
Dim width As single = image.PhysicalDimension.Width
Dim height As single = image.PhysicalDimension.Height'Add a page that has the same size as the image
Dim page As PdfPageBase = doc.Pages.Add(New SizeF(width,height))'Create a PdfImage object based on the image
Dim pdfImage As PdfImage = PdfImage.FromImage(image)'Draw image at (0, 0) of the page
page.Canvas.DrawImage(pdfImage, 0, 0, pdfImage.Width, pdfImage.Height)
Next'Save to file
doc.SaveToFile("CombinaImagesToPdf.pdf")
doc.Dispose()
End Sub
End Class
End Namespace

C#/VB.NET:将多个图像转换为单个 PDF

以上便是如何在C#/VB.NET中将多个图像转换为单个 PDF,如果您有其他问题也可以继续浏览本系列文章,获取相关教程~

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

为什么选择计算机?

还记得当初自己为什么选择计算机? 当然记得。高一下学期(2017年)听数学老师说着大数据,听着是那么牛,那么神奇,还说着目前社会上也缺少这样的人,然后那时候就有个这样的梦,想去学,想去当那少数…

36 动态规划之编辑距离

问题描述:给你两个单词word1和word2,请你计算出将word1转换为word2所需要的最少操作数。插入一个字符删除一个字符替换一个字符; 暴力穷举法:将短的那一个串作为子串(长度s),寻找在母串(长串长度p)共同字符最多的情况…

Electron V28主进程与渲染进程互相通信总结

本文示例采用ElectronVue3TS编写,请读者理顺思路,自行带入自己的项目。 注: 读本文前请先搞懂什么是主进程,什么是渲染进程。 在Electron中有着ipcMain和ipcRenderer、contextBridge模块,以及创建窗口对象上的webCont…

-bash: docker-compose: 未找到命令

-bash: docker-compose: 未找到命令 我在使用Docker搭建Nacos容器时遇到了这个问题:是没有安装 docker-compose工具 。 docker-compose的用处主要体现在以下几个方面: 快速搭建开发环境:使用docker-compose可以快速搭建起开发环境&#xff0…

一分钟轻松制作AI数字人播报视频

随着人工智能的快速发展,AI数字人播报成为了媒体和信息传播领域的一项创新技术。AI数字人播报是利用人工智能技术创建的一系列短视频,以新闻主播为中心,展示各种场景和情境能够以短视频的形式进行新闻的报道。这种创新的内容形式在社交媒体和…

Java刷题篇——单链表练习题上

206. 反转链表 - 力扣(LeetCode) 1. 题目描述 给你单链表的头节点 head ,请你反转链表,并返回反转后的链表。 示例1 输入:head [1,2,3,4,5] 输出:[5,4,3,2,1] 示例2 输入:head [1,2] 输出&…

<软考高项备考>《论文专题 - 14 绩效域(四)》

8 交付绩效域 交付绩效域涉及与交付项目相关的活动和职能。在项目整个生命周期过程中, 有效执行本绩效域可以实现预期目标,主要包含: ①项目有助于实现业务目标和战略; ②项目实现了预期成果; ③在预定时间内实现了项…

Spring Boot 3 + Vue 3 整合 WebSocket (STOMP协议) 实现广播和点对点实时消息

🚀 作者主页: 有来技术 🔥 开源项目: youlai-mall 🍃 vue3-element-admin 🍃 youlai-boot 🌺 仓库主页: Gitee 💫 Github 💫 GitCode 💖 欢迎点赞…

PostgreSQL基础

一、数据库操作命令 创建数据库 CREATE DATABASE xxxxxxx; 删除数据库 drop databse xxxxx; 查看所有数据库 \l 切换数据库 \c xxx 二、模式的更改 a)重命名:alter schema 旧名字 to 新名字; b)修改模式的归属用户:alter schema 模式名 to 新用户; 模式…

CDH安装出现Cannot open channel to X at election address Connection refused

CDH安装出现Cannot open channel to X at election address Connection refused 在刚刚启动cdh的时候要是出现以上的问题或者 org.apache.zookeeper.server.quorum.QuorumCnxManager: Cannot open channel to 3 at election address srv252/10.1.50.252:4181 java.net.Connec…

06组团队项目-Beta冲刺-2/3

github仓库:https://github.com/orgs/oucdehaze/repositories 冲刺概况汇报 前端 上周冲刺中完成的任务及遇到的问题 这一周我们小组中负责前端部分的同学继续完善了web网页的界面。在上一周的基础上对字体颜色和字体内容进行了修改,使得网站的专业性…

高可用接入层技术演化及集群概述

集群概述 集群的介绍及优势 集群:将多台服务器通过硬件或软件的方式组合起来,完成特定的任务,而这些服务器对外表现为一个整体。集群的优势 高可靠性:利用集群管理软件,当主服务器故障时,备份服务器能够自…

2023年国赛高教杯数学建模D题圈养湖羊的空间利用率解题全过程文档及程序

2023年国赛高教杯数学建模 D题 圈养湖羊的空间利用率 原题再现 规模化的圈养养殖场通常根据牲畜的性别和生长阶段分群饲养,适应不同种类、不同阶段的牲畜对空间的不同要求,以保障牲畜安全和健康;与此同时,也要尽量减少空间闲置所…

【SpringBoot实战】实现用户名密码登录

【SpringBoot实战】实现用户名密码登录 在Java项目中,实现用户名密码登录是最基本的功能。尽管实现起来不难,但也有些细节问题,故写下此篇博客作为记录。 1.创建用户表 CREATE TABLE ad_user (id int unsigned NOT NULL COMMENT 主键,name…

代码随想录算法训练营第五十五天 _ 动态规划_392. 判断子序列、115.不同的子序列。

学习目标: 动态规划五部曲: ① 确定dp[i]的含义 ② 求递推公式 ③ dp数组如何初始化 ④ 确定遍历顺序 ⑤ 打印递归数组 ---- 调试 引用自代码随想录! 60天训练营打卡计划! 学习内容: 392. 判断子序列 这个题目就是 …

消息队列kafka详解:Kafka原理分析总结

一、概述 Kakfa起初是由LinkedIn公司开发的一个分布式的消息系统,后成为Apache的一部分,它使用Scala编写,以可水平扩展和高吞吐率而被广泛使用。目前越来越多的开源分布式处理系统如Cloudera、Apache Storm、Spark等都支持与Kafka集成。 Kaf…

EasyMock介绍及安装方法(亲测可用)

1. EasyMock介绍 Easy Mock是一个可视化,并且能快速生成模拟数据的服务。以项目管理的方式组织Mock List,能帮助我们更好的管理Mock数据,不怕丢失。 2. EasyMock魅力 前后端分离:让前端工程师独立于后端进行开发 增加单元测试…

SGPIO介紹

什么是SGPIO? Serial General Purpose Input Output (SGPIO) is a method to serialize general purpose IO signals. SGPIO defines the communication between an initiator (e.g. a host bus adapter) and a target (e.g. a backplaneholding disk drives). The …

美易官方:投行把脉明年油市,花旗悲观、高盛最看涨

投行把脉明年油市,花旗悲观、高盛最看涨 随着全球经济的逐步复苏,石油市场的走势备受关注。各大投行对明年油市的预测也各不相同,其中花旗集团较为悲观,而高盛集团则最为看涨。 华尔街的预测师们认为明年原油价格有一定的恢复空间…

最小窗口子串算法题——Java解答

题目:最小窗口子串 题目描述: 给你一个字符串 s 和一个字符串 t,返回 s 中涵盖 t 所有字符的最小子串。如果 s 中不存在涵盖 t 所有字符的子串,则返回空字符串 ""。 注意: 对于 t 中重复的字符&#xff…