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
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
settings.json
{
"MainFolderName": "Outputs",
"Settings": [
{
"category": "Invoices",
"regex": "invoice|bill"
},
{
"category": "User Details",
"regex": "email"
},
{
"category": "Products",
"regex": "product|quantity"
}
]
}