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

目標(biāo)
本文演示如何使用 C# 和 iTextSharp 將圖片轉(zhuǎn)換為 PDF 的功能。
使用步驟
首先,我們需要在項(xiàng)目中引用以下兩個(gè) DLL 文件:
BouncyCastle.Crypto.dll:提供 iTextSharp 在處理數(shù)字簽名、加密、解密等功能時(shí)所需的加密支持。
itextsharp.dll:用于操作 PDF 文件。
代碼實(shí)現(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();
}
// 選擇文件按鈕,打開文件對(duì)話框并選擇圖片文件
private void button1_Click(object sender, EventArgs e)
{
OpenFileDialog ofd = new OpenFileDialog
{
InitialDirectory = Application.StartupPath, // 設(shè)置打開對(duì)話框的初始目錄
Title = "請(qǐng)選擇要打開的文件", // 設(shè)置對(duì)話框標(biāo)題
Multiselect = true, // 允許多選文件
Filter = "圖片文件|*.jpg|所有文件|*.*", // 設(shè)置文件過濾器
FilterIndex = 2, // 設(shè)置默認(rèn)過濾器索引
RestoreDirectory = false // 不記憶最后打開的目錄
};
if (ofd.ShowDialog() == DialogResult.OK)
{
string filePath = ofd.FileName; // 獲取文件路徑
string fileName = ofd.SafeFileName; // 獲取文件名(不包括路徑)
string pdfFile = filePath.Replace(".jpg", ".pdf"); // 設(shè)置轉(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)建一個(gè) 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 寫入實(shí)例
PdfWriter.GetInstance(document, stream);
document.Open(); // 打開文檔
// 加載圖片
using (var imageStream = new FileStream(jpgfile, FileMode.Open, FileAccess.Read, FileShare.ReadWrite))
{
var image = Image.GetInstance(imageStream);
// 圖片如果過大,則縮放以適應(yīng)頁(yè)面
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; // 設(shè)置圖片居中
document.Add(image); // 將圖片添加到 PDF 文檔中
}
document.Close(); // 關(guān)閉文檔
}
MessageBox.Show("PDF 轉(zhuǎn)換成功!");
return true;
}
catch (Exception ex)
{
MessageBox.Show($"轉(zhuǎn)換失敗: {ex.Message}");
return false;
}
}
// 點(diǎn)擊轉(zhuǎn)換按鈕,執(zhí)行轉(zhuǎn)換操作
private void button3_Click(object sender, EventArgs e)
{
if (string.IsNullOrEmpty(textBox1.Text))
{
MessageBox.Show("請(qǐng)選擇要轉(zhuǎn)換的圖片!");
return;
}
string jpgFile = textBox1.Text;
string pdfFile = textBox2.Text;
// 執(zhí)行圖片轉(zhuǎn)換為 PDF
ConvertJPG2PDF(jpgFile, pdfFile);
}
// 點(diǎn)擊選擇文件夾按鈕,設(shè)置輸出 PDF 文件的路徑
private void button2_Click(object sender, EventArgs e)
{
if (string.IsNullOrEmpty(textBox1.Text))
{
MessageBox.Show("請(qǐng)選擇要轉(zhuǎn)換的圖片!");
return;
}
FolderBrowserDialog folderDialog = new FolderBrowserDialog
{
Description = "請(qǐng)選擇圖片所在文件夾"
};
if (folderDialog.ShowDialog() == DialogResult.OK)
{
string filename = DateTime.Now.ToString("yyyyMMddHHmm"); // 生成文件名
textBox2.Text = Path.Combine(folderDialog.SelectedPath, $"{filename}.pdf"); // 設(shè)置輸出路徑
}
}
}
}代碼解析
選擇圖片文件:通過 OpenFileDialog 控件打開文件對(duì)話框,用戶可以選擇 .jpg 格式的圖片。選擇后,圖片路徑和對(duì)應(yīng)的 PDF 輸出路徑會(huì)顯示在文本框中。
圖片轉(zhuǎn) PDF:通過 iTextSharp 庫(kù),創(chuàng)建一個(gè) A4 尺寸的 PDF 文檔。通過 iTextSharp.text.Image.GetInstance() 方法加載圖片,如果圖片尺寸超過 A4 頁(yè)面,則自動(dòng)縮放以適應(yīng)頁(yè)面大小。最后,圖片被添加到 PDF 中并保存。
設(shè)置輸出 PDF 文件路徑:用戶可以通過 FolderBrowserDialog 選擇輸出文件夾,并設(shè)置 PDF 文件名。
總結(jié)
通過簡(jiǎn)單的用戶界面和文件操作,用戶可以方便地將 JPG 圖片轉(zhuǎn)化為 PDF 格式。這一功能對(duì)于批量生成文檔、報(bào)告或其他圖像處理場(chǎng)景非常有用。
到此這篇關(guān)于C#使用iTextSharp庫(kù)將圖片轉(zhuǎn)換為PDF的文章就介紹到這了,更多相關(guān)C# iTextSharp圖片轉(zhuǎn)PDF內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
c# 實(shí)現(xiàn)打印機(jī)狀態(tài)查詢與阻塞打印
這篇文章主要介紹了c# 引用System.Management來實(shí)現(xiàn)對(duì)打印機(jī)狀態(tài)的查詢,幫助大家更好的理解和學(xué)習(xí)使用c#,感興趣的朋友可以了解下2021-05-05
C# winform打開Excel文檔的方法總結(jié)(必看篇)
下面小編就為大家?guī)硪黄狢# winform打開Excel文檔的方法總結(jié)(必看篇)。小編覺得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2017-01-01
Windows系統(tǒng)中C#調(diào)用WinRAR來壓縮和解壓縮文件的方法
這篇文章主要介紹了Windows系統(tǒng)中C#調(diào)用WinRAR來壓縮和解壓縮文件的方法,個(gè)人感覺在Windows中WinRAR相對(duì)7-zip更加穩(wěn)定一些,需要的朋友可以參考下2016-04-04

