Arrays PDF合并VB.NET使用搜索词作为数组。代码正在运行,但复制了第一个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页 我不知道为什么我的代

我编写了这段代码,根据包含特定单词的文件名搜索2个不同的PDF文件

就我而言,我在寻找“投诉”和“证据”

我考虑使用搜索函数和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\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后将其删除?一个选项:完成后保存文件一次(将其保存在内存中,直到那时)。另一个选项:使用不同的输出目录。第三种选择:使用临时文件名,并在处理所有文件时对其进行重命名,可能会将所有文件名保留在内存中。