C#使用iTextSharp庫將圖片轉(zhuǎn)換為PDF
iTextSharp簡介
iTextSharp 是一個開源的 .NET 庫,主要用于創(chuàng)建和操作 PDF 文檔。它是 iText 的 .NET 版本,iText 是一個廣泛使用的 Java 庫。iTextSharp 繼承了 iText 的核心功能并進行了適應 .NET 平臺的調(diào)整。
iTextSharp 的主要功能包括:
創(chuàng)建 PDF 文檔:可以生成帶有文本、圖像、表格、矢量圖形等內(nèi)容的 PDF 文檔。
修改 PDF 文檔:支持從現(xiàn)有 PDF 文件中提取文本、添加或刪除頁面、修改內(nèi)容等。
數(shù)字簽名:支持為 PDF 文件添加數(shù)字簽名,以驗證文件的完整性和真實性。
加密與解密:提供對 PDF 文件進行加密保護的功能,支持設置權限(如打印、復制等),并支持解密操作。
表單功能:支持創(chuàng)建 PDF 表單,并允許數(shù)據(jù)填充、表單提交等操作。
文本抽取:可以從 PDF 文檔中提取文本,支持文字提取和 OCR(光學字符識別)功能(需要外部支持)。
支持多種字體和國際化:支持嵌入字體,能夠處理不同語言字符集(包括中文、日文等)。
高效性能:能夠高效地處理大量 PDF 文件,適用于商業(yè)和大型應用程序。
效果圖如下:

目標
本文演示如何使用 C# 和 iTextSharp 將圖片轉(zhuǎn)換為 PDF 的功能。
使用步驟
首先,我們需要在項目中引用以下兩個 DLL 文件:
BouncyCastle.Crypto.dll:提供 iTextSharp 在處理數(shù)字簽名、加密、解密等功能時所需的加密支持。
itextsharp.dll:用于操作 PDF 文件。
代碼實現(xiàn)
using System;
using System.IO;
using System.Windows.Forms;
using iTextSharp.text;
using iTextSharp.text.pdf;
namespace pdfzhuan
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
// 選擇文件按鈕,打開文件對話框并選擇圖片文件
private void button1_Click(object sender, EventArgs e)
{
OpenFileDialog ofd = new OpenFileDialog
{
InitialDirectory = Application.StartupPath, // 設置打開對話框的初始目錄
Title = "請選擇要打開的文件", // 設置對話框標題
Multiselect = true, // 允許多選文件
Filter = "圖片文件|*.jpg|所有文件|*.*", // 設置文件過濾器
FilterIndex = 2, // 設置默認過濾器索引
RestoreDirectory = false // 不記憶最后打開的目錄
};
if (ofd.ShowDialog() == DialogResult.OK)
{
string filePath = ofd.FileName; // 獲取文件路徑
string fileName = ofd.SafeFileName; // 獲取文件名(不包括路徑)
string pdfFile = filePath.Replace(".jpg", ".pdf"); // 設置轉(zhuǎn)換后的 PDF 文件路徑
textBox1.Text = filePath; // 顯示圖片路徑
textBox2.Text = pdfFile; // 顯示 PDF 輸出路徑
}
}
/// <summary>
/// 將圖片轉(zhuǎn)換為 PDF
/// </summary>
/// <param name="jpgfile">圖片文件路徑</param>
/// <param name="pdf">生成的 PDF 文件路徑</param>
/// <returns></returns>
public static bool ConvertJPG2PDF(string jpgfile, string pdf)
{
try
{
// 創(chuàng)建一個 A4 尺寸的 PDF 文檔
var document = new Document(PageSize.A4, 25, 25, 25, 25);
using (var stream = new FileStream(pdf, FileMode.Create, FileAccess.Write, FileShare.None))
{
// 獲取 PDF 寫入實例
PdfWriter.GetInstance(document, stream);
document.Open(); // 打開文檔
// 加載圖片
using (var imageStream = new FileStream(jpgfile, FileMode.Open, FileAccess.Read, FileShare.ReadWrite))
{
var image = Image.GetInstance(imageStream);
// 圖片如果過大,則縮放以適應頁面
if (image.Height > PageSize.A4.Height - 25 || image.Width > PageSize.A4.Width - 25)
{
image.ScaleToFit(PageSize.A4.Width - 25, PageSize.A4.Height - 25);
}
image.Alignment = Image.ALIGN_MIDDLE; // 設置圖片居中
document.Add(image); // 將圖片添加到 PDF 文檔中
}
document.Close(); // 關閉文檔
}
MessageBox.Show("PDF 轉(zhuǎn)換成功!");
return true;
}
catch (Exception ex)
{
MessageBox.Show($"轉(zhuǎn)換失敗: {ex.Message}");
return false;
}
}
// 點擊轉(zhuǎn)換按鈕,執(zhí)行轉(zhuǎn)換操作
private void button3_Click(object sender, EventArgs e)
{
if (string.IsNullOrEmpty(textBox1.Text))
{
MessageBox.Show("請選擇要轉(zhuǎn)換的圖片!");
return;
}
string jpgFile = textBox1.Text;
string pdfFile = textBox2.Text;
// 執(zhí)行圖片轉(zhuǎn)換為 PDF
ConvertJPG2PDF(jpgFile, pdfFile);
}
// 點擊選擇文件夾按鈕,設置輸出 PDF 文件的路徑
private void button2_Click(object sender, EventArgs e)
{
if (string.IsNullOrEmpty(textBox1.Text))
{
MessageBox.Show("請選擇要轉(zhuǎn)換的圖片!");
return;
}
FolderBrowserDialog folderDialog = new FolderBrowserDialog
{
Description = "請選擇圖片所在文件夾"
};
if (folderDialog.ShowDialog() == DialogResult.OK)
{
string filename = DateTime.Now.ToString("yyyyMMddHHmm"); // 生成文件名
textBox2.Text = Path.Combine(folderDialog.SelectedPath, $"{filename}.pdf"); // 設置輸出路徑
}
}
}
}代碼解析
選擇圖片文件:通過 OpenFileDialog 控件打開文件對話框,用戶可以選擇 .jpg 格式的圖片。選擇后,圖片路徑和對應的 PDF 輸出路徑會顯示在文本框中。
圖片轉(zhuǎn) PDF:通過 iTextSharp 庫,創(chuàng)建一個 A4 尺寸的 PDF 文檔。通過 iTextSharp.text.Image.GetInstance() 方法加載圖片,如果圖片尺寸超過 A4 頁面,則自動縮放以適應頁面大小。最后,圖片被添加到 PDF 中并保存。
設置輸出 PDF 文件路徑:用戶可以通過 FolderBrowserDialog 選擇輸出文件夾,并設置 PDF 文件名。
總結(jié)
通過簡單的用戶界面和文件操作,用戶可以方便地將 JPG 圖片轉(zhuǎn)化為 PDF 格式。這一功能對于批量生成文檔、報告或其他圖像處理場景非常有用。
到此這篇關于C#使用iTextSharp庫將圖片轉(zhuǎn)換為PDF的文章就介紹到這了,更多相關C# iTextSharp圖片轉(zhuǎn)PDF內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!
相關文章
WinForm中BackgroundWorker控件用法簡單實例
這篇文章主要介紹了WinForm中BackgroundWorker控件用法,以一個簡單實例形式分析了BackgroundWorker控件的定義、設置及使用技巧,具有一定參考借鑒價值,需要的朋友可以參考下2015-08-08
DevExpress實現(xiàn)禁用TreeListNode CheckBox的方法
這篇文章主要介紹了DevExpress實現(xiàn)禁用TreeListNode CheckBox的方法,在項目開發(fā)中有應用價值,需要的朋友可以參考下2014-08-08
C# WinForm實現(xiàn)Socket異步通訊的步驟詳解
Socket通訊是網(wǎng)絡編程中非?;A且重要的一部分,它為應用程序提供了基于TCP/IP協(xié)議進行數(shù)據(jù)傳輸?shù)哪芰?本文將詳細介紹如何在C#的WinForm應用程序中實現(xiàn)Socket的異步通訊,希望能為有需要的開發(fā)提供一些參考,需要的朋友可以參考下2025-07-07

