Batch check folder agianst JSON settings - VB.NET
PDF Extractor SDK sample in VB.NET demonstrating ‘Batch check folder agianst JSON settings’
Program.vb
Imports Bytescout.PDFExtractor
Imports System.IO
Imports Newtonsoft.Json
Class Program
Friend Shared Sub Main(args As String())
Try
' Get all settings VM
Dim allSettings As SettingsVM = GetSettingsVM("settings.json")
' Create Bytescout.PDFExtractor.TextExtractor instance
Dim extractor As New TextExtractor()
extractor.RegistrationName = "demo"
extractor.RegistrationKey = "demo"
For Each fileName As String In Directory.GetFiles("InputFiles")
' Load sample PDF document
extractor.LoadDocumentFromFile(fileName)
' Enable regex search
extractor.RegexSearch = True
' Get Number of pages PDF contains
Dim pageCount As Int32 = extractor.GetPageCount()
For iPage As Int32 = 0 To pageCount - 1
' Loop through all search settings
For Each itmSearchSetting As Settings In allSettings.Settings
' If found, then copy file to sub-category folder
If extractor.Find(iPage, itmSearchSetting.regex, False) Then
' If Directory does Not exists, then create them
If (Not Directory.Exists($"{allSettings.MainFolderName}/{itmSearchSetting.category}")) Then
Directory.CreateDirectory($"{allSettings.MainFolderName}/{itmSearchSetting.category}")
End If
' Copy File
File.Copy(fileName, $"{allSettings.MainFolderName}/{itmSearchSetting.category}/{Path.GetFileName(fileName)}", True)
End If
Next
Next
Next
' Cleanup
extractor.Dispose()
Catch ex As Exception
Console.WriteLine("Error: " + ex.Message)
End Try
Console.WriteLine()
Console.WriteLine("Press any key to continue...")
Console.ReadLine()
End Sub
Shared Function GetSettingsVM(ByVal settingsFileName As String) As SettingsVM
Dim allJson As String = File.ReadAllText(settingsFileName)
Return JsonConvert.DeserializeObject(Of SettingsVM)(allJson)
End Function
End Class
settings.json
{
"MainFolderName": "Outputs",
"Settings": [
{
"category": "Invoices",
"regex": "invoice|bill"
},
{
"category": "User Details",
"regex": "email"
},
{
"category": "Products",
"regex": "product|quantity"
}
]
}
SettingsVM.vb
Imports System.Collections.Generic
Public Class SettingsVM
Public MainFolderName As String
Public Settings As List(Of Settings)
End Class
Public Class Settings
Public category As String
Public regex As String
End Class