VB.net 合并具有相似文件名的目录中的 PDF
VB.net Merge PDF's in a directory that share a similar Filename
我目前有一个目录,我将包含多个 headers/barcodes 的 PDF 拆分为以下类别:
File# Header Sheet# 所以看起来像这样:
ZTEST01封面Sheet1
ZTEST01封面Sheet2
ZTEST01投诉3
ZTEST01投诉4
ZTEST01 图表 5
ZTEST01 图表 6
ZTEST01 召唤 8
ZTEST01 召唤 9
我的目标是让代码遍历此目录并将中间具有相同 header 名称的所有文件合并在一起:
ZTEST01 封面 Sheet 1 + ZTEST01 封面 Sheet 2 = ZTEST01 封面 Sheet
这是我的以下代码(我一直在使用 PDFsharp 和 Bytescout 来回切换,因此我暂时不使用导入,直到我找出最有效的方法):
Imports Bytescout.PDFExtractor
Imports System.Diagnostics
Imports System
Imports System.Collections.Generic
Imports System.IO
Imports System.IO.Path
Imports System.Linq
Imports System.Text
Imports System.Threading.Tasks
Imports PdfSharp.Pdf
Imports PdfSharp.Pdf.IO
Module Module2
Public Sub Main(ByVal args As String())
Dim Dir As String = "G:\Word\Department Folders\Pre-Suit\Drafts-IL-IL_AttyReview18-09\Reviewed\unmerged"
Dim name As String = "Complaint"
Dim supportedfiles As New List(Of String)()
For Each files As String In Directory.GetFiles(Dir, "*.pdf")
Dim filename As String = GetFileName(files).ToLower()
If filename Like name Then
supportedfiles.Add(files)
End If
Next files
Dim outputPdfDocument As PdfDocument = New PdfDocument()
For Each files As String In supportedfiles
Merge(outputPdfDocument, files)
Dim Path As String = IO.Path.GetFileNameWithoutExtension(files)
outputPdfDocument.Save(Dir & "\Merge\" & Path & "Complaint" & ".pdf")
Next
Console.ReadKey()
End Sub
Public Sub Merge(ByVal outputPDFDocument As PdfDocument, ByVal pdfFile As String)
Dim inputPDFDocument As PdfDocument = PdfReader.Open(pdfFile, PdfDocumentOpenMode.Import)
outputPDFDocument.Version = inputPDFDocument.Version
For Each page As PdfPage In inputPDFDocument.Pages
outputPDFDocument.AddPage(page)
Next
End Sub
End Module
我现在尝试使用像 "Complaint" 这样的文件名来查看它是否有效,但到目前为止它只是显示一个空白的 cmd 提示符。
我想为
做这个
"Cover Sheet"
"Complaint"
"Exhibit"
和"Summons"
如有任何建议,我们将不胜感激。
解决方案:
Imports System.IO
Imports System.IO.Path
Imports PdfSharp.Pdf
Imports PdfSharp.Pdf.IO
Module Module1
Private inputdir As String = "G:\Word\Department Folders\Pre-Suit\Drafts-IL-IL_AttyReview18-09\Reviewed\unmerged\
"
Public Sub Main()
MergeFiles("Cover Sheet", inputdir)
MergeFiles("Complaint", inputdir)
MergeFiles("Exhibit", inputdir)
MergeFiles("Military", inputdir)
MergeFiles("Summons", inputdir)
End Sub
Public Sub MergeFiles(ByVal name As String, inputdir As String)
Dim OutputFile As String
Dim OutputDir As String = inputdir & "\Merge\"
Dim OutputDocument As PdfDocument
If Not Directory.Exists(OutputDir) Then Directory.CreateDirectory(OutputDir)
For Each files As String In Directory.GetFiles(inputdir, "*" & name & "*.pdf")
OutputFile = GetFileNameWithoutExtension(files).Substring(0, 7) & " " & name & ".pdf"
If File.Exists(OutputDir & OutputFile) Then
OutputDocument = PdfReader.Open(OutputDir & OutputFile)
Else
OutputDocument = New PdfDocument()
End If
Console.WriteLine("Merging: {0}...", GetFileName(files))
Using InputDocument As PdfDocument = PdfReader.Open(files, PdfDocumentOpenMode.Import)
For Each page As PdfPage In InputDocument.Pages
OutputDocument.AddPage(page)
Next
End Using
OutputDocument.Save(OutputDir & OutputFile)
OutputDocument.Dispose()
Next
End Sub
End Module
我目前有一个目录,我将包含多个 headers/barcodes 的 PDF 拆分为以下类别:
File# Header Sheet# 所以看起来像这样:
ZTEST01封面Sheet1
ZTEST01封面Sheet2
ZTEST01投诉3
ZTEST01投诉4
ZTEST01 图表 5
ZTEST01 图表 6
ZTEST01 召唤 8
ZTEST01 召唤 9
我的目标是让代码遍历此目录并将中间具有相同 header 名称的所有文件合并在一起:
ZTEST01 封面 Sheet 1 + ZTEST01 封面 Sheet 2 = ZTEST01 封面 Sheet
这是我的以下代码(我一直在使用 PDFsharp 和 Bytescout 来回切换,因此我暂时不使用导入,直到我找出最有效的方法):
Imports Bytescout.PDFExtractor
Imports System.Diagnostics
Imports System
Imports System.Collections.Generic
Imports System.IO
Imports System.IO.Path
Imports System.Linq
Imports System.Text
Imports System.Threading.Tasks
Imports PdfSharp.Pdf
Imports PdfSharp.Pdf.IO
Module Module2
Public Sub Main(ByVal args As String())
Dim Dir As String = "G:\Word\Department Folders\Pre-Suit\Drafts-IL-IL_AttyReview18-09\Reviewed\unmerged"
Dim name As String = "Complaint"
Dim supportedfiles As New List(Of String)()
For Each files As String In Directory.GetFiles(Dir, "*.pdf")
Dim filename As String = GetFileName(files).ToLower()
If filename Like name Then
supportedfiles.Add(files)
End If
Next files
Dim outputPdfDocument As PdfDocument = New PdfDocument()
For Each files As String In supportedfiles
Merge(outputPdfDocument, files)
Dim Path As String = IO.Path.GetFileNameWithoutExtension(files)
outputPdfDocument.Save(Dir & "\Merge\" & Path & "Complaint" & ".pdf")
Next
Console.ReadKey()
End Sub
Public Sub Merge(ByVal outputPDFDocument As PdfDocument, ByVal pdfFile As String)
Dim inputPDFDocument As PdfDocument = PdfReader.Open(pdfFile, PdfDocumentOpenMode.Import)
outputPDFDocument.Version = inputPDFDocument.Version
For Each page As PdfPage In inputPDFDocument.Pages
outputPDFDocument.AddPage(page)
Next
End Sub
End Module
我现在尝试使用像 "Complaint" 这样的文件名来查看它是否有效,但到目前为止它只是显示一个空白的 cmd 提示符。
我想为
做这个"Cover Sheet"
"Complaint"
"Exhibit"
和"Summons"
如有任何建议,我们将不胜感激。
解决方案:
Imports System.IO
Imports System.IO.Path
Imports PdfSharp.Pdf
Imports PdfSharp.Pdf.IO
Module Module1
Private inputdir As String = "G:\Word\Department Folders\Pre-Suit\Drafts-IL-IL_AttyReview18-09\Reviewed\unmerged\
"
Public Sub Main()
MergeFiles("Cover Sheet", inputdir)
MergeFiles("Complaint", inputdir)
MergeFiles("Exhibit", inputdir)
MergeFiles("Military", inputdir)
MergeFiles("Summons", inputdir)
End Sub
Public Sub MergeFiles(ByVal name As String, inputdir As String)
Dim OutputFile As String
Dim OutputDir As String = inputdir & "\Merge\"
Dim OutputDocument As PdfDocument
If Not Directory.Exists(OutputDir) Then Directory.CreateDirectory(OutputDir)
For Each files As String In Directory.GetFiles(inputdir, "*" & name & "*.pdf")
OutputFile = GetFileNameWithoutExtension(files).Substring(0, 7) & " " & name & ".pdf"
If File.Exists(OutputDir & OutputFile) Then
OutputDocument = PdfReader.Open(OutputDir & OutputFile)
Else
OutputDocument = New PdfDocument()
End If
Console.WriteLine("Merging: {0}...", GetFileName(files))
Using InputDocument As PdfDocument = PdfReader.Open(files, PdfDocumentOpenMode.Import)
For Each page As PdfPage In InputDocument.Pages
OutputDocument.AddPage(page)
Next
End Using
OutputDocument.Save(OutputDir & OutputFile)
OutputDocument.Dispose()
Next
End Sub
End Module