iTextSharp簡介
iTextSharp 是一個開源的 .NET 庫,主要用于創建和操作 PDF 文檔。它是 iText 的 .NET 版本,iText 是一個廣泛使用的 Java 庫。iTextSharp 繼承了 iText 的核心功能并進行了適應 .NET 平臺的調整。
iTextSharp 的主要功能包括:
- 創建 PDF 文檔:可以生成帶有文本、圖像、表格、矢量圖形等內容的 PDF 文檔。
- 修改 PDF 文檔:支持從現有 PDF 文件中提取文本、添加或刪除頁面、修改內容等。
- 數字簽名:支持為 PDF 文件添加數字簽名,以驗證文件的完整性和真實性。
- 加密與解密:提供對 PDF 文件進行加密保護的功能,支持設置權限(如打印、復制等),并支持解密操作。
- 表單功能:支持創建 PDF 表單,并允許數據填充、表單提交等操作。
- 文本抽取:可以從 PDF 文檔中提取文本,支持文字提取和 OCR(光學字符識別)功能(需要外部支持)。
- 支持多種字體和國際化:支持嵌入字體,能夠處理不同語言字符集(包括中文、日文等)。
- 高效性能:能夠高效地處理大量 PDF 文件,適用于商業和大型應用程序。
效果圖如下:
目標
本文演示如何使用 C# 和 iTextSharp 將圖片轉換為 PDF 的功能。
使用步驟
首先,我們需要在項目中引用以下兩個 DLL 文件:
- BouncyCastle.Crypto.dll:提供 iTextSharp 在處理數字簽名、加密、解密等功能時所需的加密支持。
- itextsharp.dll:用于操作 PDF 文件。
代碼實現
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"); // 設置轉換后的 PDF 文件路徑textBox1.Text = filePath; // 顯示圖片路徑textBox2.Text = pdfFile; // 顯示 PDF 輸出路徑}}/// <summary>/// 將圖片轉換為 PDF/// </summary>/// <param name="jpgfile">圖片文件路徑</param>/// <param name="pdf">生成的 PDF 文件路徑</param>/// <returns></returns>public static bool ConvertJPG2PDF(string jpgfile, string pdf){try{// 創建一個 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 轉換成功!");return true;}catch (Exception ex){MessageBox.Show($"轉換失敗: {ex.Message}");return false;}}// 點擊轉換按鈕,執行轉換操作private void button3_Click(object sender, EventArgs e){if (string.IsNullOrEmpty(textBox1.Text)){MessageBox.Show("請選擇要轉換的圖片!");return;}string jpgFile = textBox1.Text;string pdfFile = textBox2.Text;// 執行圖片轉換為 PDFConvertJPG2PDF(jpgFile, pdfFile);}// 點擊選擇文件夾按鈕,設置輸出 PDF 文件的路徑private void button2_Click(object sender, EventArgs e){if (string.IsNullOrEmpty(textBox1.Text)){MessageBox.Show("請選擇要轉換的圖片!");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 輸出路徑會顯示在文本框中。 -
圖片轉 PDF:通過 iTextSharp 庫,創建一個 A4 尺寸的 PDF 文檔。通過
iTextSharp.text.Image.GetInstance()
方法加載圖片,如果圖片尺寸超過 A4 頁面,則自動縮放以適應頁面大小。最后,圖片被添加到 PDF 中并保存。 -
設置輸出 PDF 文件路徑:用戶可以通過
FolderBrowserDialog
選擇輸出文件夾,并設置 PDF 文件名。
總結
本文介紹了如何使用 iTextSharp 庫在 C# WinForms 應用中將圖片轉換為 PDF。通過簡單的用戶界面和文件操作,用戶可以方便地將 JPG 圖片轉化為 PDF 格式。這一功能對于批量生成文檔、報告或其他圖像處理場景非常有用。
源碼地址:https://download.csdn.net/download/weixin_44643352/90085127?spm=1001.2014.3001.5503