The ImGearIsisScannerSession.ScanAsync method can be used to begin scanning, and you can specify the type of data (None, ImGearDocument, Base64Document, ImGearPage, or Base64Page) that is available in the callback arguments using the scanDataType enum parameter. The enum values are 0, 1, 2, 4, and 8 so that multiple data types can be specified. You must also specify a page retrieved callback (which is fired after each page is scanned) and a document retrieved callback (which is fired after all pages are scanned), or you can specify null for either of these. If you do not specify a data type, then the corresponding property in the callback’s page/document arguments (ImGearIsisPageRetrievedResult/ImGearIsisDocumentRetrievedResult) will be null. The ImGearIsisPageRetrievedResult.ImageInfo and MetaData properties provide information about the scanned image. The page/document retrieved callback also has an ImGearIsisStatus argument which can be used to check the status of the operation.
![]() |
Note that an exception will occur in the following cases:
|
The code below demonstrates calling the ScanAsync method to scan two pages as JPEG to retrieve an ImGearPage for each scanned page. Information for each scanned page is displayed and each scanned page is displayed in a PageView control.
C# Example | ![]() |
---|---|
int pagesToScan = 2; // Set to 0 to scan all pages in the feeder. m_ScanJob = m_ScannerSession.ScanAsync(pagesToScan, ImGearIsisScanDataType.ImGearPage, ImGearIsisFileType.Jpg, ImGearIsisImageCompression.AutoDetect, (pageScannedResult, pageScannedStatus) => { if (pageScannedStatus.Status != ImGearIsisStatus.Completed) { MessageBox.Show(pageScannedStatus.StatusMessage); return; } if (pageScannedResult.PageNumber == 0) { label1WidthValue.Content = pageScannedResult.ImageInfo.Width; label1HeightValue.Content = pageScannedResult.ImageInfo.Height; label1FileTypeValue.Content = pageScannedResult.ImageInfo.FileType; label1CompressionValue.Content = pageScannedResult.ImageInfo.Compression; label1XResValue.Content = pageScannedResult.ImageInfo.XResolution; label1YResValue.Content = pageScannedResult.ImageInfo.YResolution; label1PhotometricValue.Content = pageScannedResult.ImageInfo.ColorFormat.Photometric; label1SamplesPerPixelValue.Content = pageScannedResult.ImageInfo.ColorFormat.SamplesPerPixel; label1BitsPerSampleValue.Content = pageScannedResult.ImageInfo.ColorFormat.BitsPerSample; if (pageScannedResult.Page != null) pageView.Page = pageScannedResult.Page; } else if (pageScannedResult.PageNumber == 1) { label2WidthValue.Content = pageScannedResult.ImageInfo.Width; label2HeightValue.Content = pageScannedResult.ImageInfo.Height; label2FileTypeValue.Content = pageScannedResult.ImageInfo.FileType; label2CompressionValue.Content = pageScannedResult.ImageInfo.Compression; label2XResValue.Content = pageScannedResult.ImageInfo.XResolution; label2YResValue.Content = pageScannedResult.ImageInfo.YResolution; label2PhotometricValue.Content = pageScannedResult.ImageInfo.ColorFormat.Photometric; label2SamplesPerPixelValue.Content = pageScannedResult.ImageInfo.ColorFormat.SamplesPerPixel; label2BitsPerSampleValue.Content = pageScannedResult.ImageInfo.ColorFormat.BitsPerSample; if (pageScannedResult.Page != null) pageView2.Page = pageScannedResult.Page; } }, (scanJobCompletedResult, scanJobCompletedStatus) => { if (scanJobCompletedStatus.Status != ImGearIsisStatus.Completed) { MessageBox.Show(scanJobCompletedStatus.StatusMessage); return; } }); |
VB.NET Example | ![]() |
---|---|
Dim pagesToScan As Integer = 2
' Set to 0 to scan all pages in the feeder.
m_ScanJob = m_ScannerSession.ScanAsync(
pagesToScan,
ImGearIsisScanDataType.ImGearPage,
ImGearIsisFileType.Jpg,
ImGearIsisImageCompression.AutoDetect,
Function(pageScannedResult, pageScannedStatus)
If pageScannedStatus.Status <> ImGearIsisStatus.Completed Then
MessageBox.Show(pageScannedStatus.StatusMessage)
Return Nothing
End If
If pageScannedResult.PageNumber = 0 Then
label1WidthValue.Content = pageScannedResult.ImageInfo.Width
label1HeightValue.Content = pageScannedResult.ImageInfo.Height
label1FileTypeValue.Content = pageScannedResult.ImageInfo.FileType
label1CompressionValue.Content = pageScannedResult.ImageInfo.Compression
label1XResValue.Content = pageScannedResult.ImageInfo.XResolution
label1YResValue.Content = pageScannedResult.ImageInfo.YResolution
label1PhotometricValue.Content = pageScannedResult.ImageInfo.ColorFormat.Photometric
label1SamplesPerPixelValue.Content = pageScannedResult.ImageInfo.ColorFormat.SamplesPerPixel
label1BitsPerSampleValue.Content = pageScannedResult.ImageInfo.ColorFormat.BitsPerSample
If pageScannedResult.Page IsNot Nothing Then
pageView.Page = pageScannedResult.Page
End If
ElseIf pageScannedResult.PageNumber = 1 Then
label2WidthValue.Content = pageScannedResult.ImageInfo.Width
label2HeightValue.Content = pageScannedResult.ImageInfo.Height
label2FileTypeValue.Content = pageScannedResult.ImageInfo.FileType
label2CompressionValue.Content = pageScannedResult.ImageInfo.Compression
label2XResValue.Content = pageScannedResult.ImageInfo.XResolution
label2YResValue.Content = pageScannedResult.ImageInfo.YResolution
label2PhotometricValue.Content = pageScannedResult.ImageInfo.ColorFormat.Photometric
label2SamplesPerPixelValue.Content = pageScannedResult.ImageInfo.ColorFormat.SamplesPerPixel
label2BitsPerSampleValue.Content = pageScannedResult.ImageInfo.ColorFormat.BitsPerSample
If pageScannedResult.Page IsNot Nothing Then
pageView2.Page = pageScannedResult.Page
End If
End If
Return Nothing
End Function,
Function(scanJobCompletedResult, scanJobCompletedStatus)
If scanJobCompletedStatus.Status <> ImGearIsisStatus.Completed Then
MessageBox.Show(scanJobCompletedStatus.StatusMessage)
End If
Return Nothing
End Function) |
The code below demonstrates calling the ScanAsync method to scan all pages in the feeder as G4 compressed TIFF to retrieve an ImGearDocument containing all scanned pages. The first page of the document is displayed in a PageView control.
C# Example | ![]() |
---|---|
m_ScanJob = m_ScannerSession.ScanAsync(0, ImGearIsisScanDataType.ImGearDocument, ImGearIsisFileType.Tif, ImGearIsisImageCompression.G4, (pageScannedResult, pageScannedStatus) => { if (pageScannedStatus.Status != ImGearIsisStatus.Completed) { MessageBox.Show(pageScannedStatus.StatusMessage); return; } }, (scanJobCompletedResult, scanJobCompletedStatus) => { if (scanJobCompletedStatus.Status != ImGearIsisStatus.Completed) { MessageBox.Show(scanJobCompletedStatus.StatusMessage); return; } if (scanJobCompletedResult.Document != null) { pageView.Page = scanJobCompletedResult.Document.Pages[0]; } }); |
VB.NET Example | ![]() |
---|---|
m_ScanJob = m_ScannerSession.ScanAsync( 0, ImGearIsisScanDataType.ImGearDocument, ImGearIsisFileType.Tif, ImGearIsisImageCompression.G4, Function(pageScannedResult, pageScannedStatus) If pageScannedStatus.Status <> ImGearIsisStatus.Completed Then MessageBox.Show(pageScannedStatus.StatusMessage) End If Return Nothing End Function, Function(scanJobCompletedResult, scanJobCompletedStatus) If scanJobCompletedStatus.Status <> ImGearIsisStatus.Completed Then MessageBox.Show(scanJobCompletedStatus.StatusMessage) Return Nothing End If If scanJobCompletedResult.Document IsNot Nothing Then pageView.Page = scanJobCompletedResult.Document.Pages(0) End If Return Nothing End Function) |
The ImGearIsisScanJob.CancelAsync method can be used to cancel scanning. The DestroyAsync method can be used to destroy the scan job, which deletes all scanned images that were stored internally by the service.