Arrays PDF合并VB.NET使用搜索词作为数组。代码正在运行,但复制了第一个PDF?
我编写了这段代码,根据包含特定单词的文件名搜索2个不同的PDF文件 就我而言,我在寻找“投诉”和“证据” 我考虑使用搜索函数和contains()查找这些单词 所以我会有一个目录 ZTEST10 Complaint.pdf(2页) ZTEST10 Exhibit.pdf(2页) 它们合并的输出文件名为ZTEST10 Complaint&Exhibit.pdf 唯一的问题是pdf中的投诉出现了两次?例如: 投诉第1页 投诉第2页 投诉第1页 投诉第2页 附件第1页 附件第2页 我不知道为什么我的代码会复制它找到的第一个PDF 这是我的密码:Arrays PDF合并VB.NET使用搜索词作为数组。代码正在运行,但复制了第一个PDF?,arrays,vb.net,pdf,directory,pdfsharp,Arrays,Vb.net,Pdf,Directory,Pdfsharp,我编写了这段代码,根据包含特定单词的文件名搜索2个不同的PDF文件 就我而言,我在寻找“投诉”和“证据” 我考虑使用搜索函数和contains()查找这些单词 所以我会有一个目录 ZTEST10 Complaint.pdf(2页) ZTEST10 Exhibit.pdf(2页) 它们合并的输出文件名为ZTEST10 Complaint&Exhibit.pdf 唯一的问题是pdf中的投诉出现了两次?例如: 投诉第1页 投诉第2页 投诉第1页 投诉第2页 附件第1页 附件第2页 我不知道为什么我的代
Private inputdir1 = ("G:\Word\Department Folders\Pre-Suit\Drafts-IL\2-IL_AttyReview\2018-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
我假设输出文件创建得太早,因此稍后会将输出文件复制到自身,从而复制其中一个输入文件
将
“投诉和证物”
更改为例如“组合”
,并检查问题是否已解决。关于哪些类别的PDF文档
,PDF阅读器
,PDF页面
?它们看起来像iText 7类,但我不认识其余的语法。@BrunoLowagie它们来自PdfSharp.PdfIn。在这种情况下,您应该相应地标记您的问题。@BrunoLowagie doneWow。。。我不敢相信它是这样的……所以它基本上是在反复寻找投诉,然后投诉和展示,从而制造投诉和展示。这就解决了。但我的问题是。。有没有可能让输出名为“投诉与展示”,而不通过自身搜索进行复制?这是因为文件在同一个目录中吗?或者,我可以在合并原始pdf后将其删除?一个选项:完成后保存文件一次(将其保存在内存中,直到那时)。另一个选项:使用不同的输出目录。第三种选择:使用临时文件名,并在处理所有文件时对其进行重命名,可能会将所有文件名保留在内存中。