PDF Merge VB.NET с использованием поисковых слов в качестве массивов.Код работает, но дублирует 1-й PDF? - PullRequest
0 голосов
/ 19 сентября 2018

Я написал этот код, который ищет 2 разных файла PDF на основе имени файла, содержащего определенное слово.

В моем случае я ищу "Жалоба" и "Выставить".

Я думал о поиске этих слов с помощью функции поиска и содержит ().

Итак, у меня будет каталог, в котором есть

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

1 Ответ

0 голосов
/ 19 сентября 2018

Я предполагаю, что выходной файл создается слишком рано, поэтому выходной файл копируется в него позже, дублируя один из входных файлов.

Измените " Complaint & Exhibit" на, например, " Combined" и проверьте, еслипроблема решена.

...