PDF 合并 VB.NET 使用搜索词作为数组。该代码正在运行但复制了第一个 PDF?
PDF Merge VB.NET using search words as Arrays. The Code is working but duplicating the 1st PDF?
我编写了这段代码,它根据包含特定单词的文件名搜索 2 个不同的 PDF 文件。
在我的例子中,我正在搜索 "Complaint" 和 "Exhibit"。
我考虑过使用搜索功能和 contains() 来查找这些词。
所以我会有一个目录
ZTEST10 Complaint.pdf(2 页)
ZTEST10 Exhibit.pdf(2 页)
它们合并后的输出文件名为ZTEST10 Complaint & Exhibit.pdf。
唯一的问题是在 pdf 投诉中出现了两次?示例:
投诉第1页
投诉第2页
投诉第1页
投诉第2页
展览第 1 页
展览第 2 页
我不知道为什么我的代码会复制它找到的第一个 PDF?
这是我的代码:
Private inputdir1 = ("G:\Word\Department Folders\Pre-Suit\Drafts-IL-IL_AttyReview18-09\Reviewed\unmerged\Merge\")
Sub Main()
Dim OutputFile As String
Dim OutputDir As String = inputdir1
Dim OutputDocument As PdfDocument
Dim Array = {"Complaint", "Exhibit"}
For Each Ar In Array
Dim element = Ar
For Each files As IO.FileInfo In Get_Files(inputdir1,
IO.SearchOption.TopDirectoryOnly,
"pdf",
element)
Console.WriteLine(files)
Console.WriteLine("Merging: {0}...", GetFileName(files.Name))
For Each fileinput As String In Directory.GetFiles(inputdir1, files.Name)
OutputFile = GetFileNameWithoutExtension(fileinput).Substring(0, 7) & " Complaint & Exhibit" & ".pdf"
If File.Exists(OutputDir & OutputFile) Then
OutputDocument = PdfReader.Open(OutputDir & OutputFile)
Else
OutputDocument = New PdfDocument()
End If
Using InputDocument As PdfDocument = PdfReader.Open(fileinput, PdfDocumentOpenMode.Import)
For Each page As PdfPage In InputDocument.Pages
OutputDocument.AddPage(page)
Next
End Using
OutputDocument.Save(OutputDir & OutputFile)
OutputDocument.Dispose()
Next
Next
Next
End Sub
Private Function Get_Files(ByVal directory As String,
ByVal recursive As IO.SearchOption,
ByVal ext As String,
ByVal with_word_in_filename As String) As List(Of IO.FileInfo)
Return IO.Directory.GetFiles(directory, "*" & If(ext.StartsWith("*"), ext.Substring(1), ext), recursive) _
.Where(Function(o) o.ToLower.Contains(with_word_in_filename.ToLower)) _
.Select(Function(p) New IO.FileInfo(p)).ToList
End Function
End Module
我假设输出文件创建得太早,所以输出文件稍后会复制到自身,从而复制其中一个输入文件。
将 " Complaint & Exhibit"
更改为例如" Combined"
并检查问题是否已解决。
我编写了这段代码,它根据包含特定单词的文件名搜索 2 个不同的 PDF 文件。
在我的例子中,我正在搜索 "Complaint" 和 "Exhibit"。
我考虑过使用搜索功能和 contains() 来查找这些词。
所以我会有一个目录
ZTEST10 Complaint.pdf(2 页)
ZTEST10 Exhibit.pdf(2 页)
它们合并后的输出文件名为ZTEST10 Complaint & Exhibit.pdf。
唯一的问题是在 pdf 投诉中出现了两次?示例:
投诉第1页
投诉第2页
投诉第1页
投诉第2页
展览第 1 页
展览第 2 页
我不知道为什么我的代码会复制它找到的第一个 PDF?
这是我的代码:
Private inputdir1 = ("G:\Word\Department Folders\Pre-Suit\Drafts-IL-IL_AttyReview18-09\Reviewed\unmerged\Merge\")
Sub Main()
Dim OutputFile As String
Dim OutputDir As String = inputdir1
Dim OutputDocument As PdfDocument
Dim Array = {"Complaint", "Exhibit"}
For Each Ar In Array
Dim element = Ar
For Each files As IO.FileInfo In Get_Files(inputdir1,
IO.SearchOption.TopDirectoryOnly,
"pdf",
element)
Console.WriteLine(files)
Console.WriteLine("Merging: {0}...", GetFileName(files.Name))
For Each fileinput As String In Directory.GetFiles(inputdir1, files.Name)
OutputFile = GetFileNameWithoutExtension(fileinput).Substring(0, 7) & " Complaint & Exhibit" & ".pdf"
If File.Exists(OutputDir & OutputFile) Then
OutputDocument = PdfReader.Open(OutputDir & OutputFile)
Else
OutputDocument = New PdfDocument()
End If
Using InputDocument As PdfDocument = PdfReader.Open(fileinput, PdfDocumentOpenMode.Import)
For Each page As PdfPage In InputDocument.Pages
OutputDocument.AddPage(page)
Next
End Using
OutputDocument.Save(OutputDir & OutputFile)
OutputDocument.Dispose()
Next
Next
Next
End Sub
Private Function Get_Files(ByVal directory As String,
ByVal recursive As IO.SearchOption,
ByVal ext As String,
ByVal with_word_in_filename As String) As List(Of IO.FileInfo)
Return IO.Directory.GetFiles(directory, "*" & If(ext.StartsWith("*"), ext.Substring(1), ext), recursive) _
.Where(Function(o) o.ToLower.Contains(with_word_in_filename.ToLower)) _
.Select(Function(p) New IO.FileInfo(p)).ToList
End Function
End Module
我假设输出文件创建得太早,所以输出文件稍后会复制到自身,从而复制其中一个输入文件。
将 " Complaint & Exhibit"
更改为例如" Combined"
并检查问题是否已解决。