C#使用iTextSharp庫將圖片轉(zhuǎn)換為PDF
iTextSharp簡介
iTextSharp 是一個(gè)開源的 .NET 庫,主要用于創(chuàng)建和操作 PDF 文檔。它是 iText 的 .NET 版本,iText 是一個(gè)廣泛使用的 Java 庫。iTextSharp 繼承了 iText 的核心功能并進(jìn)行了適應(yīng) .NET 平臺的調(diào)整。
iTextSharp 的主要功能包括:
創(chuàng)建 PDF 文檔:可以生成帶有文本、圖像、表格、矢量圖形等內(nèi)容的 PDF 文檔。
修改 PDF 文檔:支持從現(xiàn)有 PDF 文件中提取文本、添加或刪除頁面、修改內(nèi)容等。
數(shù)字簽名:支持為 PDF 文件添加數(shù)字簽名,以驗(yàn)證文件的完整性和真實(shí)性。
加密與解密:提供對 PDF 文件進(jìn)行加密保護(hù)的功能,支持設(shè)置權(quán)限(如打印、復(fù)制等),并支持解密操作。
表單功能:支持創(chuàng)建 PDF 表單,并允許數(shù)據(jù)填充、表單提交等操作。
文本抽?。嚎梢詮?PDF 文檔中提取文本,支持文字提取和 OCR(光學(xué)字符識別)功能(需要外部支持)。
支持多種字體和國際化:支持嵌入字體,能夠處理不同語言字符集(包括中文、日文等)。
高效性能:能夠高效地處理大量 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(); } // 選擇文件按鈕,打開文件對話框并選擇圖片文件 private void button1_Click(object sender, EventArgs e) { OpenFileDialog ofd = new OpenFileDialog { InitialDirectory = Application.StartupPath, // 設(shè)置打開對話框的初始目錄 Title = "請選擇要打開的文件", // 設(shè)置對話框標(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)頁面 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("請選擇要轉(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("請選擇要轉(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"); // 設(shè)置輸出路徑 } } } }
代碼解析
選擇圖片文件:通過 OpenFileDialog 控件打開文件對話框,用戶可以選擇 .jpg 格式的圖片。選擇后,圖片路徑和對應(yīng)的 PDF 輸出路徑會(huì)顯示在文本框中。
圖片轉(zhuǎn) PDF:通過 iTextSharp 庫,創(chuàng)建一個(gè) A4 尺寸的 PDF 文檔。通過 iTextSharp.text.Image.GetInstance() 方法加載圖片,如果圖片尺寸超過 A4 頁面,則自動(dòng)縮放以適應(yīng)頁面大小。最后,圖片被添加到 PDF 中并保存。
設(shè)置輸出 PDF 文件路徑:用戶可以通過 FolderBrowserDialog 選擇輸出文件夾,并設(shè)置 PDF 文件名。
總結(jié)
通過簡單的用戶界面和文件操作,用戶可以方便地將 JPG 圖片轉(zhuǎn)化為 PDF 格式。這一功能對于批量生成文檔、報(bào)告或其他圖像處理場景非常有用。
到此這篇關(guān)于C#使用iTextSharp庫將圖片轉(zhuǎn)換為PDF的文章就介紹到這了,更多相關(guān)C# iTextSharp圖片轉(zhuǎn)PDF內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
c# 實(shí)現(xiàn)打印機(jī)狀態(tài)查詢與阻塞打印
這篇文章主要介紹了c# 引用System.Management來實(shí)現(xiàn)對打印機(jī)狀態(tài)的查詢,幫助大家更好的理解和學(xué)習(xí)使用c#,感興趣的朋友可以了解下2021-05-05C# winform打開Excel文檔的方法總結(jié)(必看篇)
下面小編就為大家?guī)硪黄狢# winform打開Excel文檔的方法總結(jié)(必看篇)。小編覺得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2017-01-01Windows系統(tǒng)中C#調(diào)用WinRAR來壓縮和解壓縮文件的方法
這篇文章主要介紹了Windows系統(tǒng)中C#調(diào)用WinRAR來壓縮和解壓縮文件的方法,個(gè)人感覺在Windows中WinRAR相對7-zip更加穩(wěn)定一些,需要的朋友可以參考下2016-04-04