今天用VB.NET来做一个提高工作效率的小工具"PDF合并工具".
问:为什么要自己做,不使用网上的现成工具?
答:因现在网上99%以上的PDF合并工具都是需要收费,或者要使用收费的破J版,或者是一些网页的在线服务不能上传和合并大批量的文件(这也涉及到文件的安全性)所以想着自己弄一个.
问:这款小工具能为工作解决那些问题?
答:开发这款小工具主要解决的问题是大批量打印PDF文件,平常在工作中我们常常需要打印大批量的PDF文件,我们通常的操作就是使用PDF阅读器,一个个打开然后,然后就是一个个点击打印(这是我知道的方式哈,有更简洁的方式请广大的网友分享一下,让我学习学习),这样就要耗费我们非常多的时间效率低下;我想到的方式就是使用程序一个个批量发送到打印机打印,但这种方式有一个弊端就是不稳定有可能会中断,然后就不知道自己打印到那一份文件了,同时几个人打印也容易被人插进来,导致文件错乱,不好分类;后来我就想到了一个方式就是把PDF一次性合并成一个文件,然后发送到打印机,这样就不怕中断,因它只是一个单一文件,同时打印别人也无法插进来,要等当前单个文件打印完成后别人才能插进来,文件也不会出现错乱,不用可以去分类,这就是开发这个小工具的意义所在.
好了下面请看效果图和演示吧
(界面效果)
今天用来测试的文件有1551个PDF文件
1,数据加载演示
1.1加载源目录所有的文件列表(方式一,右侧按钮只加载顶层目录列表,方式二,右键按钮加载顶层及其子目录的又有文件)
1.2 指定文件名加载列表
1.3 手动选择PDF文件
2.列表编辑按钮
3.右键文件名拾取按钮
4.下面就是今天的重点了,合并PDF关键代码的书写
使用的类库(这类库非商业是免费的,商业使用请联系类库作者)
PdfSharp.Charting
PdfSharp
合并PDF的关键代码(其他的代码都是datagridview的操作,就不放出来了)
''' <summary>
''' 合并PDF文件
''' </summary>
''' <param name="Save_Path">保存的地址</param>
''' <param name="files">文件列表</param>
''' <returns></returns>
Public Function MergePdf(Save_Path As String, files As List(Of String)) As Boolean
Try
Using out_doc As New PdfDocument()
For Each file As String In files
Using input_doc As PdfDocument = PdfReader.Open(file, PdfDocumentOpenMode.Import)
For Each page As PdfPage In input_doc.Pages
out_doc.AddPage(page)
Next
input_doc.Close()
End Using
Next
out_doc.Save(Save_Path)
out_doc.Close()
End Using
Return True
Catch e As Exception
MessageBox.Show("合并错误:" & e.Message, "合并", Nothing, MessageBoxIcon.Error)
End Try
Return False
End Function
5.工具下载地址
https://vbee.lanzous.com/ijrOQk08ayh