VintaSoft Twain .NET SDK 15.4: Documentation for .NET developer
In This Topic
How to save TWAIN acquired image(s) in a database?
In This Topic
Here is an example that demonstrates how to save TWAIN acquired images as multipage PDF document in memory. Later, PDF document can be saved in database or transferred to server.
/// <summary>
/// Synchronously acquires images from TWAIN device and saves images in a database.
/// </summary>
public void AcquireImagesFromTwainDeviceAndSaveImagesInDatabase()
{
    // create TWAIN device manager
    using (Vintasoft.Twain.DeviceManager deviceManager = new Vintasoft.Twain.DeviceManager())
    {
        // open TWAIN device manager
        deviceManager.Open();

        // get count of TWAIN devices
        int deviceCount = deviceManager.Devices.Count;
        if (deviceCount == 0)
        {
            System.Console.WriteLine("Devices are not found.");
            return;
        }

        // select the default TWAIN device
        Vintasoft.Twain.Device device = deviceManager.DefaultDevice;

        // open TWAIN device
        device.Open();

        System.IO.MemoryStream pdfDocumentInMemory = null;
        // acquire image(s) from the device
        Vintasoft.Twain.AcquireModalState acquireModalState;
        do
        {
            acquireModalState = device.AcquireModal();
            switch (acquireModalState)
            {
                case Vintasoft.Twain.AcquireModalState.ImageAcquired:
                    // if memory stream is empty
                    if (pdfDocumentInMemory == null)
                        // get the first image as PDF stored in the memory
                        pdfDocumentInMemory = device.AcquiredImage.GetAsStream(new Vintasoft.Twain.ImageEncoders.TwainPdfEncoderSettings());
                    else
                        // add image to PDF stored in the memory
                        device.AcquiredImage.Save(pdfDocumentInMemory, new Vintasoft.Twain.ImageEncoders.TwainPdfEncoderSettings());

                    device.AcquiredImage.Dispose();
                    break;

                case Vintasoft.Twain.AcquireModalState.ScanCompleted:
                    // save memory stream to a database
                    break;

                case Vintasoft.Twain.AcquireModalState.ScanCanceled:
                    // output current state
                    System.Console.WriteLine("Scan canceled.");
                    break;

                case Vintasoft.Twain.AcquireModalState.ScanFailed:
                    // output current state
                    System.Console.WriteLine(string.Format("Scan failed: {0}", device.ErrorString));
                    break;
            }
        }
        while (acquireModalState != Vintasoft.Twain.AcquireModalState.None);

        // close SANE device
        device.Close();

        // close SANE device manager
        deviceManager.Close();
    }

    System.Console.ReadLine();
}
''' <summary>
''' Synchronously acquires images from TWAIN device and saves images in a database.
''' </summary>
Public Sub AcquireImagesFromTwainDeviceAndSaveImagesInDatabase()
    ' create TWAIN device manager
    Using deviceManager As New Vintasoft.Twain.DeviceManager()
        ' open TWAIN device manager
        deviceManager.Open()

        ' get count of TWAIN devices
        Dim deviceCount As Integer = deviceManager.Devices.Count
        If deviceCount = 0 Then
            System.Console.WriteLine("Devices are not found.")
            Return
        End If

        ' select the default TWAIN device
        Dim device As Vintasoft.Twain.Device = deviceManager.DefaultDevice

        ' open TWAIN device
        device.Open()

        Dim pdfDocumentInMemory As System.IO.MemoryStream = Nothing
        ' acquire image(s) from the device
        Dim acquireModalState As Vintasoft.Twain.AcquireModalState
        Do
            acquireModalState = device.AcquireModal()
            Select Case acquireModalState
                Case Vintasoft.Twain.AcquireModalState.ImageAcquired
                    ' if memory stream is empty
                    If pdfDocumentInMemory Is Nothing Then
                        ' get the first image as PDF stored in the memory
                        pdfDocumentInMemory = device.AcquiredImage.GetAsStream(New Vintasoft.Twain.ImageEncoders.TwainPdfEncoderSettings())
                    Else
                        ' add image to PDF stored in the memory
                        device.AcquiredImage.Save(pdfDocumentInMemory, New Vintasoft.Twain.ImageEncoders.TwainPdfEncoderSettings())
                    End If

                    device.AcquiredImage.Dispose()
                    Exit Select

                Case Vintasoft.Twain.AcquireModalState.ScanCompleted
                    ' save memory stream to a database
                    Exit Select

                Case Vintasoft.Twain.AcquireModalState.ScanCanceled
                    ' output current state
                    System.Console.WriteLine("Scan canceled.")
                    Exit Select

                Case Vintasoft.Twain.AcquireModalState.ScanFailed
                    ' output current state
                    System.Console.WriteLine(String.Format("Scan failed: {0}", device.ErrorString))
                    Exit Select
            End Select
        Loop While acquireModalState <> Vintasoft.Twain.AcquireModalState.None

        ' close SANE device
        device.Close()

        ' close SANE device manager
        deviceManager.Close()
    End Using

    System.Console.ReadLine()
End Sub