职场办公当中多个PDf文档合并为一个文档是非常常见的需求,目前很多软件和在线工具提供的合并功能要么收费要么看广告。今天给大家分享通过C#写一个PDF文档合并小工具。仅仅两个小时就可以搞定。以后再也不用付费或者看广告完成PDF文档合并的工作了。感兴趣的朋友可以看下去,实现非常简单!
开发工具:Visual Studio 2019
框架:C#+iTextSharp+WinForm
iTextSharp 是 .NET 平台上的开源 PDF 处理库,支持文档创建、合并、拆分、文本/图像添加、表单处理、密码保护、水印添加等功能。
首先打开VS2019 创建一个Winfrom窗体应用程序,然后点击下一步,具体如下图:
进入配置新项目界面,给项目命名PDFMergeTools,框架选择Net4.5版本。
项目创建完成后引入引入第三方iTextSharp类库版本5.5.10。这里直接使用nuget包管理器窗口直接安装。
点击安装按钮,弹出许可界面
接着点击我接受就可以进行安装了。
最终完整项目代码结构如下:
运行窗体添加一个文件选择框用来选择要合并的PDF文件,支持多选。
增加一个输出目录文本框用来定义输出目录,默认为D盘
增加一个listBox控件获取选择的PDF文件列表
增加一个合并PDF点击按钮用来执行合并动作。
最终界面效果如下图:
选择要合并的PDF文档按钮实现选择PDF文件并且填充到列表框,主要代码如下:
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逻辑代码
/// <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按钮点击事件
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 删除。