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è)、歸檔掃描件等場(chǎng)景,可根據(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)文章
c#模擬平拋運(yùn)動(dòng)動(dòng)畫的方法詳解
本篇文章是對(duì)使用c#模擬平拋運(yùn)動(dòng)動(dòng)畫的方法進(jìn)行了詳細(xì)的分析介紹,需要的朋友參考下2013-06-06
C#實(shí)現(xiàn)十進(jìn)制數(shù)轉(zhuǎn)換為十六進(jìn)制的幾種方式
在C#中,十進(jìn)制和十六進(jìn)制轉(zhuǎn)換非常簡單,本文給大家介紹了C#實(shí)現(xiàn)十進(jìn)制數(shù)轉(zhuǎn)換為十六進(jìn)制的幾種方式,并通過代碼示例講解的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作有一定的幫助,需要的朋友可以參考下2024-04-04
C#?Winform文本面板帶滾動(dòng)條的實(shí)現(xiàn)過程
當(dāng)數(shù)據(jù)過多時(shí),往往無法在一頁中展示,所以非常需要一個(gè)滾動(dòng)條來調(diào)節(jié)頁面內(nèi)容,這篇文章主要給大家介紹了關(guān)于C#?Winform文本面板帶滾動(dòng)條的實(shí)現(xiàn)過程,需要的朋友可以參考下2022-12-12
C#結(jié)合OpenCVSharp4使用直方圖算法實(shí)現(xiàn)圖片相似度比較
這篇文章主要為大家詳細(xì)介紹了C#如何結(jié)合OpenCVSharp4使用直方圖算法實(shí)現(xiàn)圖片相似度比較,文中的示例代碼簡潔易懂,需要的小伙伴可以參考下2023-09-09
C#實(shí)現(xiàn)以文件流的形式返回本地文件或遠(yuǎn)程文件路徑
FileStream和FileInfo只能處理本地文件路徑,無法直接處理HTTP URL,所以下面小編就來和大家詳細(xì)介紹一下C#如何實(shí)現(xiàn)以文件流的形式返回本地文件或遠(yuǎn)程文件路徑吧2025-08-08
Unity代碼實(shí)現(xiàn)序列幀動(dòng)畫播放器
這篇文章主要為大家詳細(xì)介紹了Unity代碼實(shí)現(xiàn)序列幀動(dòng)畫播放器,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2019-02-02
使用C#自動(dòng)化生成Excel單元格數(shù)據(jù)驗(yàn)證
在日常報(bào)表開發(fā)中,Excel 的數(shù)據(jù)準(zhǔn)確性和可控性與格式美觀同樣重要,本文將演示如何在 同一個(gè)工作表中 設(shè)置 下拉列表、數(shù)值范圍、日期區(qū)間、文本長度、自定義公式和輸入提示,有需要的小伙伴可以了解下2025-09-09

