C#使用iTextSharp库将图片转换为PDF

 更新时间:2024年12月12日 15:41:38   作者:数据的世界01  
iTextSharp 是一个开源的 .NET 库,主要用于创建和操作 PDF 文档,本文主要介绍了如何使用 C# 和 iTextSharp 将图片转换为 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 文件名。

总结

通过简单的用户界面和文件操作,用户可以方便地将 JPG 图片转化为 PDF 格式。这一功能对于批量生成文档、报告或其他图像处理场景非常有用。

到此这篇关于C#使用iTextSharp库将图片转换为PDF的文章就介绍到这了,更多相关C# iTextSharp图片转PDF内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • c#中单例类与静态类的区别以及使用场景

    c#中单例类与静态类的区别以及使用场景

    这篇文章主要给大家介绍了关于c#中单例类与静态类的区别以及使用场景的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2021-01-01
  • C# 表达式树Expression Trees的知识梳理

    C# 表达式树Expression Trees的知识梳理

    本篇文章主要介绍了表达式树 Expression Trees的基础知识:Lambda 表达式创建表达式树;API 创建表达式树;编译表达式树;执行表达式树;修改表达式树等等,具有一定的参考价值,下面跟着小编一起来看下吧
    2017-01-01
  • C#访问网络共享文件夹的方法

    C#访问网络共享文件夹的方法

    这篇文章主要为大家详细介绍了C#访问网络共享文件夹的方法,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2018-05-05
  • C#实现Stream与byte[]之间的转换实例教程

    C#实现Stream与byte[]之间的转换实例教程

    这篇文章主要介绍了C#实现Stream与byte[]之间的转换方法,具体讲解了二进制转换成图片、byte[]与string的转换、Stream 和 byte[] 之间的转换、Stream 和 文件之间的转换、从文件读取 Stream以及Bitmap 转化为 Byte[]等,需要的朋友可以参考下
    2014-09-09
  • vs2019 实现C#调用c++的dll两种方法

    vs2019 实现C#调用c++的dll两种方法

    这篇文章主要介绍了vs2019 实现C#调用c++的dll两种方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-10-10
  • C# SendMail发送邮件功能实现

    C# SendMail发送邮件功能实现

    这篇文章主要为大家详细介绍了C# SendMail发送邮件功能实现,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2017-06-06
  • C# wpf使用ffmpeg命令行实现录屏的示例代码

    C# wpf使用ffmpeg命令行实现录屏的示例代码

    本文主要介绍了C# wpf使用ffmpeg命令行实现录屏的示例代码,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2022-08-08
  • 深入理解c#多态

    深入理解c#多态

    这篇文章主要介绍了c#多态的相关知识,文中代码非常详细,帮助大家更好的理解和学习,感兴趣的朋友可以了解下
    2020-06-06
  • C#实现计算器功能

    C#实现计算器功能

    这篇文章主要为大家详细介绍了C#实现计算器功能,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2022-01-01

最新评论