У меня есть код VB.NET, который до сих пор работает для одного файла, и он разбивает этот файл на основе уникального штрих-кода на каждой странице, чтобы идентифицировать его.
Каждый штрих-код является одним из:
COVERSPLIT
COMPLAINTSPLIT
EXHIBITSPLIT
MILSPLIT
SUMSPLIT
Проблема в том, что, например, на первой странице есть штрих-код COVERSPLIT, потому что это обложка, но следующий лист также является обложкой, но на не есть штрих-код. Поэтому, когда я запускаю свой код, он извлекает листы только с теми идентифицированными штрих-кодами и удаляет те, которые этого не делают.
Я пытался сделать это:
Imports Bytescout.PDFExtractor
Imports System.Collections
Imports System.Collections.Generic
Imports System.IO.Path
Class Program
Friend Shared Sub Main(args As String())
Dim Dir As String = "G:\Word\Department Folders\Pre-Suit\Drafts-IL\2-IL_AttyReview\2018-09\Reviewed\"
Dim inputFile As String = Dir & "ZTEST01.SMITH.pdf"
Dim Unmerged As String = Dir & "unmerged\"
Dim Path As String = IO.Path.GetFileNameWithoutExtension(inputFile)
Dim Extracted As String = Path.Substring(0, 7)
' Create Bytescout.PDFExtractor.TextExtractor instance
Dim extractor As New TextExtractor()
' Load sample PDF document
extractor.LoadDocumentFromFile(inputFile)
Dim pageCount As Integer = extractor.GetPageCount()
' Search each page for a keyword
For i As Integer = 0 To pageCount - 1
If extractor.Find(i, "COVERSPLIT", False) Then
' Extract page
Using splitter As New DocumentSplitter()
splitter.OptimizeSplittedDocuments = True
Dim pageNumber As Integer = i + 1
' (!) page number in ExtractPage() is 1-based
Dim outputfile As String = Unmerged & Extracted & " Cover Sheet " & pageNumber.ToString() & ".pdf"
splitter.ExtractPage(inputFile, outputfile, pageNumber)
Console.WriteLine("Extracted page " & pageNumber.ToString() & " to file """ & outputfile & """")
End Using
End If
Next
For i As Integer = 0 To pageCount - 1
If extractor.Find(i, "COVERSPLIT", False) Then
' Extract page
Using splitter As New DocumentSplitter()
splitter.OptimizeSplittedDocuments = True
Dim pageNumber As Integer = i + 2
' (!) page number in ExtractPage() is 1-based
Dim outputfile As String = Unmerged & Extracted & " Cover Sheet " & pageNumber.ToString() & ".pdf"
splitter.ExtractPage(inputFile, outputfile, pageNumber)
Console.WriteLine("Extracted page " & pageNumber.ToString() & " to file """ & outputfile & """")
End Using
End If
Next
For i As Integer = 0 To pageCount - 1
If extractor.Find(i, "COMPLAINTSPLIT", False) Then
' Extract page
Using splitter As New DocumentSplitter()
splitter.OptimizeSplittedDocuments = True
Dim pageNumber As Integer = i + 1
' (!) page number in ExtractPage() is 1-based
Dim outputfile As String = Unmerged & Extracted & " Complaint " & pageNumber.ToString() & ".pdf"
splitter.ExtractPage(inputFile, outputfile, pageNumber)
Console.WriteLine("Extracted page " & pageNumber.ToString() & " to file """ & outputfile & """")
End Using
End If
Next
For i As Integer = 0 To pageCount - 1
If extractor.Find(i, "COMPLAINTSPLIT", False) Then
' Extract page
Using splitter As New DocumentSplitter()
splitter.OptimizeSplittedDocuments = True
Dim pageNumber As Integer = i + 2
' (!) page number in ExtractPage() is 1-based
Dim outputfile As String = Unmerged & Extracted & " Complaint " & pageNumber.ToString() & ".pdf"
splitter.ExtractPage(inputFile, outputfile, pageNumber)
Console.WriteLine("Extracted page " & pageNumber.ToString() & " to file """ & outputfile & """")
End Using
End If
Next
For i As Integer = 0 To pageCount - 1
If extractor.Find(i, "EXHIBITSPLIT", False) Then
' Extract page
Using splitter As New DocumentSplitter()
splitter.OptimizeSplittedDocuments = True
Dim pageNumber As Integer = i + 1
' (!) page number in ExtractPage() is 1-based
Dim outputfile As String = Unmerged & Extracted & " Exhibit " & pageNumber.ToString() & ".pdf"
splitter.ExtractPage(inputFile, outputfile, pageNumber)
Console.WriteLine("Extracted page " & pageNumber.ToString() & " to file """ & outputfile & """")
End Using
End If
Next
For i As Integer = 0 To pageCount - 1
If extractor.Find(i, "EXHIBITSPLIT", False) Then
' Extract page
Using splitter As New DocumentSplitter()
splitter.OptimizeSplittedDocuments = True
Dim pageNumber As Integer = i + 2
' (!) page number in ExtractPage() is 1-based
Dim outputfile As String = Unmerged & Extracted & " Exhibit " & pageNumber.ToString() & ".pdf"
splitter.ExtractPage(inputFile, outputfile, pageNumber)
Console.WriteLine("Extracted page " & pageNumber.ToString() & " to file """ & outputfile & """")
End Using
End If
Next
For i As Integer = 0 To pageCount - 1
If extractor.Find(i, "MILSPLIT", False) Then
' Extract page
Using splitter As New DocumentSplitter()
splitter.OptimizeSplittedDocuments = True
Dim pageNumber As Integer = i + 1
' (!) page number in ExtractPage() is 1-based
Dim outputfile As String = Unmerged & Extracted & " Military " & pageNumber.ToString() & ".pdf"
splitter.ExtractPage(inputFile, outputfile, pageNumber)
Console.WriteLine("Extracted page " & pageNumber.ToString() & " to file """ & outputfile & """")
End Using
End If
Next
For i As Integer = 0 To pageCount - 1
If extractor.Find(i, "SUMSPLIT", False) Then
' Extract page
Using splitter As New DocumentSplitter()
splitter.OptimizeSplittedDocuments = True
Dim pageNumber As Integer = i + 1
' (!) page number in ExtractPage() is 1-based
Dim outputfile As String = Unmerged & Extracted & " Summons " & pageNumber.ToString() & ".pdf"
splitter.ExtractPage(inputFile, outputfile, pageNumber)
Console.WriteLine("Extracted page " & pageNumber.ToString() & " to file """ & outputfile & """")
End Using
End If
Next
For i As Integer = 0 To pageCount - 1
If extractor.Find(i, "SUMSPLIT", False) Then
' Extract page
Using splitter As New DocumentSplitter()
splitter.OptimizeSplittedDocuments = True
Dim pageNumber As Integer = i + 2
' (!) page number in ExtractPage() is 1-based
Dim outputfile As String = Unmerged & Extracted & " Summons " & pageNumber.ToString() & ".pdf"
splitter.ExtractPage(inputFile, outputfile, pageNumber)
Console.WriteLine("Extracted page " & pageNumber.ToString() & " to file """ & outputfile & """")
End Using
End If
Next
' Cleanup
extractor.Dispose()
Console.WriteLine()
Console.WriteLine("Press any key...")
Console.ReadKey()
End Sub
End Class
Как видите, я просто скопировал и вставил тот же цикл For i...
и просто изменил Dim pageNumber на Integer i + 1 на i +2, чтобы включить его дополнительную страницу.
Проблема в том, что иногда страница с уникальным штрих-кодом может иметь неопределенное количество страниц после нее ...
Итак, как бы я написал это так, чтобы он извлекал, например:
Страница COVERSPLIT + все последующие страницы без штрих-кода до перехода на следующую страницу с штрих-кодом (COMPLAINTSPLIT, например)?
А также, как я мог сделать это так, чтобы он извлекал страницу со штрих-кодом COVERSPLIT со своими страницами (до тех пор, пока он не достигнет следующего штрих-кода), но сохраняя все эти страницы вместе в одном файле PDF?