ImageGear for Silverlight
Scan Job
Send Feedback
ImageGear for Silverlight User Guide > Using ImageGear for Silverlight > Using ImageGear.Isis Namespace > Scan Job

Glossary Item Box

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:

  • A base 64 scanned data retrieval option is specified in watermark evaluation mode, as that mode does not support base 64 scanned data retrieval.
  • Both a single page format (JPEG, JPEG 2000, or PNG) and a document retrieval scan data type (ImGearDocument or Base64Document) are specified.
  • The ZIP compression format is specified when retrieving an ImGearPage or ImGearDocument.
  • A compression type that is not valid for the specified file type is specified. Refer to the ImGearIsisFileType enum page for information regarding which compression types are supported for each file type.
  • A scan job is already in progress.

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 Copy Code
            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 Copy Code
        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 Copy Code
            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 Copy Code
        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.

©2013. Accusoft Corporation. All Rights Reserved.