通过C#转换图片到PDF文档
将图片(JPG、PNG)转换为PDF文件可以帮助我们更好地保存和分享图片。此外,PDF文件还具有强大的安全特性,将图片转换为PDF后,我们可以通过设置密码来文件内容不被泄露。本文将介绍如何将JPG/PNG图片转换为PDF文档。
- C# 将单张图片转换为PDF文档
- C# 将多张图片转换到一个PDF文档
此教程可以使用第三方免费库 Free Spire.PDF for .NET,但需要注意该免费库有一定的页数限制。开始前,我们可以通过以下链接下载产品包后手动添加引用,或者直接通过 NuGet 安装。
C# 将单张图片转换为PDF文档
Free Spire.PDF for .NET提供的图片转PDF的方法是将加载的图片绘制到PDF页面上实现的,主要步骤如下:
- 创建一个 PDF文档,然后将其页边距设置为0。
- 使用 Image.FromFile() 方法加载图片,然后获取图片的宽度和高度。
- 通过 PdfDocument.Pages.Add() 方法添加一个与图片大小相同的PDF页面。
- 根据图片创建 PdfImage 对象。
- 使用 PdfPageBase.Canvas.DrawImage() 方法在PDF页面上绘制 PdfImage 对象。
- 使用 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");
}
}
}

C# 将多张图片转换到一个PDF文档
Free Spire.PDF for .NET也可以将一个文件夹中的多张图片绘制到一个PDF文档的不同页面上,主要步骤如下:
- 创建一个 PDF文档,然后将其页边距设置为0。
- 获取存储图片的文件夹。
- 遍历文件夹中的每个图像文件,并获取每一张图片的宽度和高度。
- 通过 PdfDocument.Pages.Add() 方法在PDF文档中添加与图片大小相同的PDF页面。
- 使用 PdfPageBase.Canvas.DrawImage() 方法在页面上绘制各个图片。
- 使用 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();
}
}
}

– 如需在.NET 程序实现其他PDF文档的操作,如创建、读取、添加图片、表格等,可以从以下链接中查看相关教程:
https://www.e-iceblue.cn/spirepdfnet/spire-pdf-for-net-program-guide-content.html
通过C#转换图片到PDF文档的更多相关文章
- 批量将网页转换成图片或PDF文档技巧分享
工作中我们有时要将一些批量的网页转换成图片或者PDF文档格式,尽管多数浏览器具有滚动截屏或者打印输出PDF文档功能.可是假设有几十上百张网页须要处理,那也是要人命的.所以我一直想找一款可以批量处理该工 ...
- C# 添加文本、图片到PDF文档(基于Spire.Cloud.PDF.SDK)
Spire.Cloud.PDF.SDK提供了接口PdfTextApi及PdfImagesApi用于添加文本和图片到PDF文档,添加文本时,可格式化文本样式,包括文本字体类型.字号.字体样式.文本颜色. ...
- iTextSharp带中文转换出来的PDF文档显示乱码
刚才有写一个小练习<Html代码保存为Pdf文件>http://www.cnblogs.com/insus/p/4323224.html.马上有网友说,当截取块有中文时,保存的pdf文件将 ...
- 如何通过Java应用程序压缩PDF文档
PDF文档是我们日常办公中使用最频繁的文档格式.但因为大多数PDF文档都包含很多页面图像或大量图片,这就导致PDF文档过大,处理起来较为麻烦.PDF文件过大,就会导致传输或者下载的速度变慢,也会增加传 ...
- [开源框架推荐]Icepdf:纯java的pdf文档的提取和转换库
ICEpdf 是一个轻量级的开源 Java 语言的 PDF 类库.通过 ICEpdf 可以用来浏览.内容提取和转换 PDF 文档,而无须一些本地PDF库的支持. 可以用来做什么? 1.从pdf文件中提 ...
- PDF2SWF转换只有一页的PDF文档,在FlexPaper不显示解决方法
问题:PDF2SWF转换只有一页的PDF文档,在FlexPaper不显示! FlexPaper 与 PDF2SWF 结合是解决在线阅读PDF格式文件的问题的,多页的PDF文件转换可以正常显示,只有一页 ...
- java将office文档pdf文档转换成swf文件在线预览
第一步,安装openoffice.org openoffice.org是一套sun的开源office办公套件,能在widows,linux,solaris等操作系统上执行. 主要模块有writer(文 ...
- Java使用wkhtmltox实现HTML代码生成PDF文档或者图片
由于项目需要,把HTML代码转为PDF或者图片进行保存.最开始使用Flying Saucer来把HTML代码生成为PDF文档,功能已经开发出来了,也能够完成转换功能,期间也遇到了中文支持以及图片路径的 ...
- 【使用Itext处理PDF文档(新建PDF文件、修改PDF文件、PDF中插入图片、将PDF文件转换为图片)】
iText简介 iText是著名的开放源码的站点sourceforge一个项目,是用于生成PDF文档的一个java类库.通过iText不仅可以生成PDF或rtf的文档,而且可以将XML.Html文件转 ...
- Java生成PDF文档(表格、列表、添加图片等)
需要的两个包及下载地址: (1)iText.jar:http://download.csdn.net/source/296416 (2)iTextAsian.jar(用来进行中文的转换):http:/ ...
随机推荐
- 基于开源IM即时通讯框架MobileIMSDK:RainbowChat v11.6版已发布
关于RainbowChat RainbowChat是一套基于开源IM聊天框架 MobileIMSDK 的产品级移动端IM系统.RainbowChat源于真实运营的产品,解决了大量的屏幕适配.细节优化. ...
- 阿里IM技术分享(七):闲鱼IM的在线、离线聊天数据同步机制优化实践
本文由阿里闲鱼技术团队书闲分享,原题"如何有效缩短闲鱼消息处理时长",有修订和改动,感谢作者的分享. 1.引言 闲鱼技术团队围绕IM这个技术范畴,已经分享了好几篇实践性总结文章,本 ...
- 在jooq的POJO类中使用Lombok的Data注解
jooq生成pojo类的配置根据官方给的如下: https://www.jooq.org/doc/3.14/manual/getting-started/tutorials/jooq-in-7-ste ...
- Verilog5_有限状态机
一.有限状态机(Finite State Machine, FSM)基本概念 有限状态机是由寄存器组和组合逻辑构成的硬件时序电路: 其状态只能在同一时钟跳变沿从一个状态转向另一个状态: ...
- 深入解析 Spring AI 系列:项目结构一览
从今天起,我们将以 Spring AI 为主线,开始更新一系列的文章.这些文章将围绕 Spring AI 项目展开,结合我的理解,深入讲解其相关的知识点.技术原理.以及在实际开发过程中涉及到的部分代码 ...
- RocketMQ的架构设计、关键特性、与应用场景详解
内容大纲: 1.RocketMQ的简介与演进 2. RocketMQ的架构设计 3.RocketMQ的关键特性 4.RocketMQ的应用场景 RocketMQ的简介 RocketMQ一个纯java. ...
- 深入理解第三范式(3NF):数据库设计中的重要性与实践
title: 深入理解第三范式(3NF):数据库设计中的重要性与实践 date: 2025/1/17 updated: 2025/1/17 author: cmdragon excerpt: 在数据库 ...
- Exfiltrated pg walkthrough Easy
80端口弱口令admin admin 发现cms 搜索exp 发现漏洞 https://www.exploit-db.com/exploits/49876 找到敏感数据库密码和用户 ╔════════ ...
- 理解ABP的领域驱动设计
大家好,我是张飞洪,感谢您的阅读,我会不定期和你分享学习心得,希望我的文章能成为你成长路上的垫脚石,让我们一起精进. 关于玩转ABP框架相关的文章,之前在博客园陆续写了<ABP vNext系列文 ...
- LangChain基础篇 (01)
LangChain 是什么 Langchain 是一个开源框架,它允许开发人员将大型语言模型与外部的计算和数据源结合起来,是一个通过组合模块和能力抽象来扩展 LLM 的助手 为什么需要 LangCha ...