C#實(shí)現(xiàn)將多張圖片轉(zhuǎn)換到一個(gè)PDF文檔
在日常開發(fā)中,經(jīng)常需要將多張圖片(如 JPG、PNG、BMP 等)合并為一個(gè) PDF 文檔,方便存儲(chǔ)和分享。本文將介紹如何使用 C# 結(jié)合 Spire.PDF for .NET 庫實(shí)現(xiàn)這一功能,該庫提供了簡潔的 API,無需依賴 Adobe Acrobat 即可快速操作 PDF。
一、準(zhǔn)備工作
Spire.PDF for .NET是一個(gè)專業(yè)的PDF處理類庫,支持創(chuàng)建、編輯、轉(zhuǎn)換PDF文檔,同時(shí)提供了豐富的圖片處理能力,可輕松將圖片插入PDF頁面。
安裝步驟如下:
推薦通過 NuGet 包管理器安裝:
- 在 Visual Studio 中右鍵點(diǎn)擊項(xiàng)目,選擇“管理 NuGet 包”
- 搜索“Spire.PDF”并安裝
- 安裝完成后,引用命名空間:
using Spire.Pdf;和using Spire.Pdf.Graphics;
二、核心實(shí)現(xiàn)步驟
功能需求
將指定文件夾中的所有圖片(支持JPG、PNG、BMP等格式)按順序合并為一個(gè)PDF,每張圖片占一頁,且頁面大小自適應(yīng)圖片尺寸。
完整代碼示例
using Spire.Pdf;
using Spire.Pdf.Graphics;
using System.Drawing;
namespace ConvertMultipleImagesIntoPdf
{
class Program
{
static void Main(string[] args)
{
// 創(chuàng)建PdfDocument對(duì)象
PdfDocument pdf = new PdfDocument();
// 將頁邊距設(shè)置為0
pdf.PageSettings.SetMargins(0);
// 獲取圖片存放的文件夾
DirectoryInfo folder = new DirectoryInfo(@"C:\Users\Administrator\Desktop\Images");
// 遍歷圖片
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.FromImage(image);
page.Canvas.DrawImage(pdfImage, 0, 0, pdfImage.Width, pdfImage.Height);
}
// 保存PDF文檔
pdf.SaveToFile("CombinaImagesToPdf.pdf");
pdf.Dispose();
}
}
}
代碼解析
- 參數(shù)配置:指定圖片文件夾路徑,可根據(jù)實(shí)際需求修改。
- PDF頁面創(chuàng)建:創(chuàng)建一個(gè)與圖片尺寸完全相同的 PDF 頁面(確保頁面大小適配圖片,無拉伸或裁剪)
- 圖片繪制:
page.Canvas.DrawImage()從頁面左上角 (0,0) 開始繪制圖片,尺寸與圖片原始尺寸一致,最終效果是圖片完全覆蓋頁面。 - 釋放資源:
Dispose()手動(dòng)釋放 PdfDocument 對(duì)象占用的資源。
三、擴(kuò)展技巧
1. 固定PDF頁面大小
如果需要所有頁面使用固定尺寸(如A4),可修改頁面創(chuàng)建邏輯:
// 創(chuàng)建A4尺寸頁面(210mm×297mm) PdfPageBase page = pdf.Pages.Add(PdfPageSize.A4);
2. 圖片縮放適應(yīng)頁面
若圖片尺寸超過頁面,可自動(dòng)縮放:
// 計(jì)算縮放比例(確保圖片完全顯示在頁面內(nèi)) float scaleX = page.Canvas.ClientSize.Width / pdfImage.Width; float scaleY = page.Canvas.ClientSize.Height / pdfImage.Height; float scale = Math.Min(scaleX, scaleY); // 按比例縮放繪制 page.Canvas.DrawImage(pdfImage, x, y, pdfImage.Width * scale, pdfImage.Height * scale);
四、方法補(bǔ)充
C# 將單張圖片轉(zhuǎn)換為PDF文檔
Free Spire.PDF for .NET提供的圖片轉(zhuǎn)PDF的方法是將加載的圖片繪制到PDF頁面上實(shí)現(xiàn)的,主要步驟如下:
- 創(chuàng)建一個(gè) PDF文檔,然后將其頁邊距設(shè)置為0。
- 使用 Image.FromFile() 方法加載圖片,然后獲取圖片的寬度和高度。
- 通過 PdfDocument.Pages.Add() 方法添加一個(gè)與圖片大小相同的PDF頁面。
- 根據(jù)圖片創(chuàng)建 PdfImage 對(duì)象。
- 使用 PdfPageBase.Canvas.DrawImage() 方法在PDF頁面上繪制PdfImage對(duì)象。
- 使用 PdfDocument.SaveToFile() 方法保存生成的 PDF 文檔。
示例代碼:
ing System.Drawing;
using Spire.Pdf;
using Spire.Pdf.Graphics;
namespace ConvertImageToPdfWithSameSize
{
class Program
{
static void Main(string[] args)
{
//創(chuàng)建PdfDocument對(duì)象
PdfDocument pdf = new PdfDocument();
//將頁邊距設(shè)為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;
//創(chuàng)建PdfImage對(duì)象
PdfImage pdfImage = PdfImage.FromFile(@"C:\Users\Administrator\Desktop\work.jpg");
//添加一個(gè)與圖片大小相同的PDF頁面
PdfPageBase page = pdf.Pages.Add(new SizeF(width, height));
//在頁面上繪制圖片
page.Canvas.DrawImage(pdfImage, 0, 0, pdfImage.Width, pdfImage.Height);
//保存PDF
pdf.SaveToFile("圖片轉(zhuǎn)Pdf.pdf");
}
}
}
C# 將多張圖片轉(zhuǎn)換到一個(gè)PDF文檔
Free Spire.PDF for .NET也可以將一個(gè)文件夾中的多張圖片繪制到一個(gè)PDF文檔的不同頁面上,主要步驟如下:
- 創(chuàng)建一個(gè) PDF文檔,然后將其頁邊距設(shè)置為0。
- 獲取存儲(chǔ)圖片的文件夾。
- 遍歷文件夾中的每個(gè)圖像文件,并獲取每一張圖片的寬度和高度。
- 通過 PdfDocument.Pages.Add() 方法在PDF文檔中添加與圖片大小相同的PDF頁面。
- 使用 PdfPageBase.Canvas.DrawImage() 方法在頁面上繪制各個(gè)圖片。
- 使用 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)
{
//創(chuàng)建PdfDocument對(duì)象
PdfDocument pdf = new PdfDocument();
//將頁邊距設(shè)為0
pdf.PageSettings.SetMargins(0);
//獲取存儲(chǔ)圖片的文件夾
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));
//創(chuàng)建PdfImage對(duì)象
PdfImage pdfImage = PdfImage.FromFile(file.FullName);
//在頁面上繪制圖片
page.Canvas.DrawImage(pdfImage, 0, 0, pdfImage.Width, pdfImage.Height);
}
//保存PDF
pdf.SaveToFile("多圖轉(zhuǎn)Pdf.pdf");
pdf.Dispose();
}
}
}
結(jié)語:通過 Spire.PDF for .NET 庫,使用簡單代碼即可實(shí)現(xiàn)圖片轉(zhuǎn) PDF 的功能,相比傳統(tǒng)方案(System.Drawing + GDI+)更簡潔易用。該方法適用于批量處理圖片、生成電子相冊(cè)、歸檔掃描件等場景,可根據(jù)實(shí)際需求擴(kuò)展更多功能(如添加頁碼、水印等)。
到此這篇關(guān)于C#實(shí)現(xiàn)將多張圖片轉(zhuǎn)換到一個(gè)PDF文檔的文章就介紹到這了,更多相關(guān)C#多張圖片轉(zhuǎn)PDF內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
10個(gè)C#程序員經(jīng)常用到的實(shí)用代碼片段
如果你是一個(gè)C#程序員,那么本文介紹的10個(gè)C#常用代碼片段一定會(huì)給你帶來幫助,從底層的資源操作,到上層的UI應(yīng)用,這些代碼也許能給你的開發(fā)節(jié)省不少時(shí)間。以下是原文:2015-09-09
如何讓C#、VB.NET實(shí)現(xiàn)復(fù)雜的二進(jìn)制操作
VB.NET和C#屬于高級(jí)語言,對(duì)二進(jìn)制位操作的支持不是很好,比如沒有了移位運(yùn)算等,用的時(shí)候確實(shí)很不方便,所以在閑暇之余我重新封裝了一個(gè)用于C#、VB.NET的位操作類庫,通過該類庫可以實(shí)現(xiàn)數(shù)據(jù)移位、循環(huán)移位、轉(zhuǎn)換為二進(jìn)制、將二進(jìn)制轉(zhuǎn)換為數(shù)據(jù)等2013-07-07
C#使用Spire.Doc for .NET獲取并替換Word文檔中的字體
在企業(yè)文檔處理流程中,C# Word 字體替換需求頻繁出現(xiàn),手動(dòng)查找并替換 Word 文檔字體,不僅耗費(fèi)時(shí)間,還易遺漏,Spire.Doc for .NET 作為專業(yè)庫,提供查找并替換字體功能,支持自動(dòng)化批量操作,本文基于 Spire.Doc,分享精確 C# 代碼,實(shí)現(xiàn)字體標(biāo)準(zhǔn)化,需要的朋友可以參考下2026-03-03

