首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >C#实战:基于iTextSharp实现PDF合并功能

C#实战:基于iTextSharp实现PDF合并功能

原创
作者头像
小明互联网技术分享社区
发布2025-08-25 09:13:04
发布2025-08-25 09:13:04
14700
代码可运行
举报
文章被收录于专栏:C#实战C#实战
运行总次数:0
代码可运行

职场办公当中多个PDf文档合并为一个文档是非常常见的需求,目前很多软件和在线工具提供的合并功能要么收费要么看广告。今天给大家分享通过C#写一个PDF文档合并小工具。仅仅两个小时就可以搞定。以后再也不用付费或者看广告完成PDF文档合并的工作了。感兴趣的朋友可以看下去,实现非常简单!

一、开发准备

开发工具:Visual Studio 2019

框架:C#+iTextSharp+WinForm

iTextSharp 是 .NET 平台上的开源 PDF 处理库,支持文档创建、合并、拆分、文本/图像添加、表单处理、密码保护、水印添加等功能。

二、项目创建

首先打开VS2019 创建一个Winfrom窗体应用程序,然后点击下一步,具体如下图:

进入配置新项目界面,给项目命名PDFMergeTools,框架选择Net4.5版本。

项目创建完成后引入引入第三方iTextSharp类库版本5.5.10。这里直接使用nuget包管理器窗口直接安装。

点击安装按钮,弹出许可界面

接着点击我接受就可以进行安装了。

最终完整项目代码结构如下:

二、代码实战

2.1 窗体部分

运行窗体添加一个文件选择框用来选择要合并的PDF文件,支持多选。

增加一个输出目录文本框用来定义输出目录,默认为D盘

增加一个listBox控件获取选择的PDF文件列表

增加一个合并PDF点击按钮用来执行合并动作。

最终界面效果如下图:

2.2 代码部分

选择要合并的PDF文档按钮实现选择PDF文件并且填充到列表框,主要代码如下:

代码语言:javascript
代码运行次数:0
运行
复制
  private void button1_Click(object sender, EventArgs e)
        {
            openFileDialog1.Filter = "PDF文件|*.pdf";
            if (openFileDialog1.ShowDialog() == DialogResult.OK)
            {
                listBox1.Items.Clear();
                listBox1.Items.AddRange(openFileDialog1.FileNames);               
            }
        }

合并PDF逻辑代码

代码语言:javascript
代码运行次数:0
运行
复制
 /// <summary>
        /// PDF合并方法
        /// </summary>
        /// <param name="outputPath"></param>
        private void mergePdf(string outputPath)
        {
            try
            {
                var fileName = "\\"+DateTime.Now.ToString("yyyyMMddHHmmss")+".pdf";

                using (FileStream fsOut = new FileStream(outputPath+ fileName, FileMode.Create, FileAccess.Write, FileShare.None))
                {
                    Document document = new Document();
                    PdfCopy copy = new PdfCopy(document, fsOut);
                    document.Open();

                    foreach (string file in listBox1.Items.Cast<string>().ToList())
                    {
                        PdfReader reader = new PdfReader(file);
                        for (int page = 1; page <= reader.NumberOfPages; page++)
                        {
                            document.NewPage(); // 创建一个新页面,这对于合并很重要,主要作用是避免每个文件之间合并后有空白页。
                            PdfImportedPage importedPage = copy.GetImportedPage(reader, page);
                            copy.AddPage(importedPage);
                        }
                        reader.Close(); // 关闭每个文件的阅读器以释放资源
                    }
                    document.Close(); // 关闭文档并完成合并过程
                    MessageBox.Show("PDF合并成功,输出完整路径为:"+ outputPath + fileName);
                }
            }
            catch (Exception ex)
            {
                MessageBox.Show("PDF合并异常,请联系管理员!"+ex.Message.ToString());
            }
        }

说明:文件名时候时间命名避免重复。PDF合并成功可以显示输出目录

合并PDF按钮点击事件

代码语言:javascript
代码运行次数:0
运行
复制
        private void btnOk_Click(object sender, EventArgs e)
        {
            if (listBox1.Items.Count == 0)
            {
                MessageBox.Show("请先选择待合并的PDF文档!");
                return;
            }
            if (string.IsNullOrWhiteSpace(txtOutFilePath.Text))
            {               
                MessageBox.Show("输出目录不能为空!");
                return;
            }         
            mergePdf(txtOutFilePath.Text);
        }

说明:校验待合并的PDF列表不能为空,输出目录不能为空。

三、运行效果

运行主界面

选择文件之后效果如下

点击合并PDF按钮

打开PDF文档查看效果

四、总结

通过C#实现PDF文档转换功能还是非常简单的。功能比较简单仅供新手入门学习。大家实际操作过程中有啥问题的话欢迎评论区沟通交流!

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 一、开发准备
  • 二、项目创建
  • 二、代码实战
    • 2.1 窗体部分
    • 2.2 代码部分
  • 三、运行效果
  • 四、总结
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档