通过C#转换图片到PDF文档
<p>将图片(JPG、PNG)转换为PDF文件可以帮助我们更好地保存和分享图片。此外,PDF文件还具有强大的安全特性,将图片转换为PDF后,我们可以通过设置密码来文件内容不被泄露。本文将介绍如何将JPG/PNG图片转换为PDF文档。</p><ul>
<li>C# 将单张图片转换为PDF文档</li>
<li>C# 将多张图片转换到一个PDF文档</li>
</ul>
<p> </p>
<blockquote>
<p>此教程可以使用第三方免费库 <span style="background-color: rgba(255, 255, 153, 1)"><span style="background-color: rgba(255, 255, 153, 1)"><strong>Free Spire.PDF for .NET</strong></span></span>,但需要注意该免费库有一定的页数限制。开始前,我们可以通过以下链接下载产品包后手动添加引用,或者直接通过 NuGet 安装。</p>
<p><em><em id="__mceDel"><em id="__mceDel">https://www.e-iceblue.cn/Downloads/Free-Spire-PDF-NET.html</em></em></em></p>
</blockquote>
<p> </p>
<h3>C# 将单张图片转换为PDF文档</h3>
<p>Free Spire.PDF for .NET提供的图片转PDF的方法是将加载的图片绘制到PDF页面上实现的,主要步骤如下:</p>
<ol>
<li>创建一个 PDF文档,然后将其页边距设置为0。</li>
<li>使用 <em><strong>Image.FromFile()</strong></em> 方法加载图片,然后获取图片的宽度和高度。</li>
<li>通过 <em><strong>PdfDocument.Pages.Add()</strong></em> 方法添加一个与图片大小相同的PDF页面。</li>
<li>根据图片创建 <em><strong>PdfImage</strong></em> 对象。</li>
<li>使用 <em><strong>PdfPageBase.Canvas.DrawImage()</strong></em> 方法在PDF页面上绘制 <em><strong>PdfImage</strong></em> 对象。</li>
<li>使用 <em><strong>PdfDocument.SaveToFile()</strong> </em>方法保存生成的 PDF 文档。</li>
</ol>
<p>示例代码:</p>
<div class="cnblogs_code">
<pre><span style="color: rgba(0, 0, 0, 1)">ing System.Drawing;
</span><span style="color: rgba(0, 0, 255, 1)">using</span><span style="color: rgba(0, 0, 0, 1)"> Spire.Pdf;
</span><span style="color: rgba(0, 0, 255, 1)">using</span><span style="color: rgba(0, 0, 0, 1)"> Spire.Pdf.Graphics;
</span><span style="color: rgba(0, 0, 255, 1)">namespace</span><span style="color: rgba(0, 0, 0, 1)"> ConvertImageToPdfWithSameSize
{
</span><span style="color: rgba(0, 0, 255, 1)">class</span><span style="color: rgba(0, 0, 0, 1)"> Program
{
</span><span style="color: rgba(0, 0, 255, 1)">static</span> <span style="color: rgba(0, 0, 255, 1)">void</span> Main(<span style="color: rgba(0, 0, 255, 1)">string</span><span style="color: rgba(0, 0, 0, 1)">[] args)
{
</span><span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)">创建PdfDocument对象</span>
PdfDocument pdf = <span style="color: rgba(0, 0, 255, 1)">new</span><span style="color: rgba(0, 0, 0, 1)"> PdfDocument();
</span><span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)">将页边距设为0</span>
pdf.PageSettings.SetMargins(<span style="color: rgba(128, 0, 128, 1)">0</span><span style="color: rgba(0, 0, 0, 1)">);
</span><span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)">加载图片</span>
Image image = Image.FromFile(<span style="color: rgba(128, 0, 0, 1)">@"</span><span style="color: rgba(128, 0, 0, 1)">C:\Users\Administrator\Desktop\work.jpg</span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(0, 0, 0, 1)">);
</span><span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)">获取图片尺寸</span>
<span style="color: rgba(0, 0, 255, 1)">float</span> width =<span style="color: rgba(0, 0, 0, 1)"> image.PhysicalDimension.Width;
</span><span style="color: rgba(0, 0, 255, 1)">float</span> height =<span style="color: rgba(0, 0, 0, 1)"> image.PhysicalDimension.Height;
</span><span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)">创建PdfImage对象</span>
PdfImage pdfImage = PdfImage.FromFile(<span style="color: rgba(128, 0, 0, 1)">@"</span><span style="color: rgba(128, 0, 0, 1)">C:\Users\Administrator\Desktop\work.jpg</span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(0, 0, 0, 1)">);
</span><span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)">添加一个与图片大小相同的PDF页面</span>
PdfPageBase page = pdf.Pages.Add(<span style="color: rgba(0, 0, 255, 1)">new</span><span style="color: rgba(0, 0, 0, 1)"> SizeF(width, height));
</span><span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)">在页面上绘制图片</span>
page.Canvas.DrawImage(pdfImage, <span style="color: rgba(128, 0, 128, 1)">0</span>, <span style="color: rgba(128, 0, 128, 1)">0</span><span style="color: rgba(0, 0, 0, 1)">, pdfImage.Width, pdfImage.Height);
</span><span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)">保存PDF</span>
pdf.SaveToFile(<span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">图片转Pdf.pdf</span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(0, 0, 0, 1)">);
}
}
}</span></pre>
</div>
<p><img src="https://img2024.cnblogs.com/blog/706090/202503/706090-20250317165746260-1864977674.png"></p>
<p> </p>
<h3>C# 将多张图片转换到一个PDF文档</h3>
<p><em id="__mceDel">Free Spire.PDF for .NET也可以将一个文件夹中的多张图片绘制到一个PDF文档的不同页面上,主要步骤如下:</em></p>
<ol>
<li>创建一个 PDF文档,然后将其页边距设置为0。</li>
<li>获取存储图片的文件夹。</li>
<li>遍历文件夹中的每个图像文件,并获取每一张图片的宽度和高度。</li>
<li>通过 <em><strong>PdfDocument.Pages.Add()</strong></em> 方法在PDF文档中添加与图片大小相同的PDF页面。</li>
<li>使用 <em><strong>PdfPageBase.Canvas.DrawImage()</strong></em> 方法在页面上绘制各个图片。</li>
<li>使用 <em><strong>PdfDocument.SaveToFile()</strong> </em>方法保存生成的PDF文档。</li>
</ol>
<p>示例代码:</p>
<div class="cnblogs_code">
<pre><span style="color: rgba(0, 0, 255, 1)">using</span><span style="color: rgba(0, 0, 0, 1)"> Spire.Pdf;
</span><span style="color: rgba(0, 0, 255, 1)">using</span><span style="color: rgba(0, 0, 0, 1)"> Spire.Pdf.Graphics;
</span><span style="color: rgba(0, 0, 255, 1)">using</span><span style="color: rgba(0, 0, 0, 1)"> System.Drawing;
</span><span style="color: rgba(0, 0, 255, 1)">using</span><span style="color: rgba(0, 0, 0, 1)"> System.IO;
</span><span style="color: rgba(0, 0, 255, 1)">namespace</span><span style="color: rgba(0, 0, 0, 1)"> ConvertMultipleImagesIntoPdf
{
</span><span style="color: rgba(0, 0, 255, 1)">class</span><span style="color: rgba(0, 0, 0, 1)"> Program
{
</span><span style="color: rgba(0, 0, 255, 1)">static</span> <span style="color: rgba(0, 0, 255, 1)">void</span> Main(<span style="color: rgba(0, 0, 255, 1)">string</span><span style="color: rgba(0, 0, 0, 1)">[] args)
{
</span><span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)">创建PdfDocument对象</span>
PdfDocument pdf = <span style="color: rgba(0, 0, 255, 1)">new</span><span style="color: rgba(0, 0, 0, 1)"> PdfDocument();
</span><span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)">将页边距设为0</span>
pdf.PageSettings.SetMargins(<span style="color: rgba(128, 0, 128, 1)">0</span><span style="color: rgba(0, 0, 0, 1)">);
</span><span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)">获取存储图片的文件夹</span>
DirectoryInfo folder = <span style="color: rgba(0, 0, 255, 1)">new</span> DirectoryInfo(<span style="color: rgba(128, 0, 0, 1)">@"</span><span style="color: rgba(128, 0, 0, 1)">C:\Users\Administrator\Desktop\图片</span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(0, 0, 0, 1)">);
</span><span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)">遍历文件夹中的图片</span>
<span style="color: rgba(0, 0, 255, 1)">foreach</span> (FileInfo file <span style="color: rgba(0, 0, 255, 1)">in</span><span style="color: rgba(0, 0, 0, 1)"> folder.GetFiles())
{
</span><span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)">加载图片</span>
Image image =<span style="color: rgba(0, 0, 0, 1)"> Image.FromFile(file.FullName);
</span><span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)">获取图片尺寸</span>
<span style="color: rgba(0, 0, 255, 1)">float</span> width =<span style="color: rgba(0, 0, 0, 1)"> image.PhysicalDimension.Width;
</span><span style="color: rgba(0, 0, 255, 1)">float</span> height =<span style="color: rgba(0, 0, 0, 1)"> image.PhysicalDimension.Height;
</span><span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)">添加与图片大小相同的PDF页面</span>
PdfPageBase page = pdf.Pages.Add(<span style="color: rgba(0, 0, 255, 1)">new</span><span style="color: rgba(0, 0, 0, 1)"> SizeF(width, height));
</span><span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)">创建PdfImage对象</span>
PdfImage pdfImage =<span style="color: rgba(0, 0, 0, 1)"> PdfImage.FromFile(file.FullName);
</span><span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)">在页面上绘制图片</span>
page.Canvas.DrawImage(pdfImage, <span style="color: rgba(128, 0, 128, 1)">0</span>, <span style="color: rgba(128, 0, 128, 1)">0</span><span style="color: rgba(0, 0, 0, 1)">, pdfImage.Width, pdfImage.Height);
}
</span><span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)">保存PDF</span>
pdf.SaveToFile(<span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">多图转Pdf.pdf</span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(0, 0, 0, 1)">);
pdf.Dispose();
}
}
}</span></pre>
</div>
<p><img src="https://img2024.cnblogs.com/blog/706090/202503/706090-20250317165816421-1101440150.png"></p>
<p> </p>
<hr>
<p> </p>
<p>– 如需在.NET 程序实现其他PDF文档的操作,如创建、读取、添加图片、表格等,可以从以下链接中查看相关教程:</p>
<p>https://www.e-iceblue.cn/spirepdfnet/spire-pdf-for-net-program-guide-content.html</p>
<p> </p><br><br>
来源:https://www.cnblogs.com/Yesi/p/18777174
頁:
[1]