在现代软件开发中,将图片转换为PDF文档是一种常见需求,特别是在处理电子文档、报告生成和数据存储等场景中。iTextSharp是一个功能强大的开源库,专门用于在.NET环境中创建和操作PDF文档。本文将详细介绍如何使用iTextSharp库在C#中将图片转换为PDF文档,包括具体的步骤和实例代码解析,帮助开发者快速掌握这一实用技能。
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; // 执行图片转换为 PDF ConvertJPG2PDF(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#中将图片转换为PDF文档的具体步骤和实例代码。从创建PDF文档、添加图片到保存PDF文件,每一步都进行了详细的解析。iTextSharp库的强大功能和灵活性使其成为处理PDF文档的理想选择。希望本文的内容能帮助开发者在实际项目中高效地实现图片到PDF的转换,提升工作效率。
本文来源于#数据的世界01,由@蜜芽 整理发布。如若内容造成侵权/违法违规/事实不符,请联系本站客服处理!
该文章观点仅代表作者本人,不代表本站立场。本站不承担相关法律责任。
如若转载,请注明出处:https://www.zhanid.com/biancheng/2602.html