通过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:/ ...
随机推荐
- 痞子衡嵌入式:MCUXpresso for VS Code开发环境搭建及SDK工程导入
大家好,我是痞子衡,是正经搞技术的痞子.今天痞子衡给大家介绍的是MCUXpresso for VS Code开发环境搭建及SDK工程导入. MCUXpresso IDE(包括其前身 LPCXpress ...
- 饿了么组件中el-menu el-submenu el-menu-item三者之间的关系
饿了么组件中el-menu el-submenu el-menu-item三者之间的关系: 1.<el-menu>是菜单标签,里面可以包括:<el-submenu>和&l ...
- VS2010/MFC 获取当前程序路径的方法
第一种方法 DWORD GetCurrentDirectory( DWORD nBufferLength, // size, in characters, of directory buffer LP ...
- 微服务实战系列(一)-注册中心Springcloud Eureka服务端-copy
1. 场景描述 springcloud提供了一整套可行的构建分布式系统的方案,使的企业/开发人员能够快速沟通分布式系统,今天快速构建下springcloud的注册中心Eureka. 2. 解决方案 2 ...
- 【刷题】牛客模拟面试 > 模拟面试报告
https://www.nowcoder.com/interview/ai/index 1-TCP协议的流量控制和拥塞控制 TCP的流量控制是基于窗口机制实现的: 在建立连接时, 发送方和接收方都会建 ...
- 详解 IntelliJ IDEA 配置和启动maven项目步骤
一 .从svn中检出web项目: 1.如果是maven项目:首先配置仓库 2.从svn中检出maven项目: 3.检查项目是否是maven项目,如果不是转化成maven,然后点击,更新jar 二.配置 ...
- Linux系统设置用户密码规则(复杂密码策略)方法
Linux系统下的用户密码的有效期 可以修改密码可以通过login.defs文件控制.设置密码过期期限(默认情况下,用户的密码永不过期.) 编辑 /etc/login.defs 文件,可以设置当前密码 ...
- 一. 初始 Redis(快速入门-00)
一. 初始 Redis(快速入门-00) @ 目录 一. 初始 Redis(快速入门-00) Redis 概述: 关系型数据库(如 MySQL ) 问题 NoSQL 数据库(非关系性数据库) 最后: ...
- webstorm前端vue项目安装依赖包总结
npm install提示错误信息,与node.js版本有关.以下是用到的一些命令行参数: 1.清除npm的缓存:npm cache clean --force 2.设置npm下载镜像:npm con ...
- 原生input上传视拼,参数形式 file: (binary)形式的
<input type="file" @change="demo"> if(e.target.files[0]&&e.target. ...