VB.net объединяет PDF-файлы в каталог с одинаковым именем файла - PullRequest
0 голосов
/ 04 сентября 2018

В настоящее время у меня есть каталог, в котором я разбил PDF-файл с несколькими заголовками / штрих-кодами на следующие категории:

File # Header Sheet #, так это выглядит так:

ZTEST01 Титульный лист 1

ZTEST01 Титульный лист 2

ZTEST01 Жалоба 3

ZTEST01 Жалоба 4

ZTEST01 Экспонат 5

ZTEST01 Экспонат 6

ZTEST01 Призывает 8

ZTEST01 Призывает 9

Моя цель - сделать так, чтобы код перебирал этот каталог и объединял все файлы с одинаковым именем заголовка в середине:

ZTEST01 Титульный лист 1 + ZTEST01 Титульный лист 2 = ZTEST01 Титульный лист

Это следующий код, который у меня есть (я ходил туда-сюда с 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\2-IL_AttyReview\2018-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

Я попытался пока использовать имя файла, например «Жалоба», чтобы посмотреть, работает ли оно, но пока просто вызывает пустое приглашение cmd.

Я бы хотел сделать это для

"Титульный лист"

"Жалоба"

"Экспонат"

и "Призыв"

Любые предложения будут с благодарностью.

1 Ответ

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

Решение:

    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\2-IL_AttyReview\2018-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
...