VintaSoft Twain .NET SDK v10.3
In This Topic
    How to add acquired images to PDF document?
    In This Topic

    Acquired image can be saved to a new PDF document or added to an existing PDF document.


    Example: Here is an example that shows how to add acquired images to a PDF document.

    ' The project, which uses this code, must have references to the following assemblies:
    ' - Vintasoft.Twain
    
    Imports System.Windows.Forms
    Imports Vintasoft.Twain
    Imports Vintasoft.Twain.ImageEncoders
    
    ''' <summary>
    ''' Class allows to scan and save image to a PDF document.
    ''' </summary>
    Partial Public Class How_to_save_acquired_images_to_PDF_document
        Inherits Form
    
        ''' <summary>
        ''' TWAIN device manager.
        ''' </summary>
        Private _deviceManager As DeviceManager
    
    
    
        Public Sub New()
            InitializeComponent()
    
            ' create and open device manager
            _deviceManager = New DeviceManager(Me)
            _deviceManager.Open()
        End Sub
    
    
    
        ''' <summary>
        ''' Acquire images asynchronously.
        ''' </summary>
        Public Sub AcquireImagesAsynchronously()
            Try
                ' get reference to the default device
                Dim device1 As Device = _deviceManager.DefaultDevice
    
                ' subscribe to the device events
                AddHandler device1.ImageAcquired, New EventHandler(Of ImageAcquiredEventArgs)(AddressOf device_ImageAcquired)
                AddHandler device1.ScanCanceled, New EventHandler(AddressOf device_ScanCanceled)
                AddHandler device1.ScanFailed, New EventHandler(Of ScanFailedEventArgs)(AddressOf device_ScanFailed)
                AddHandler device1.ScanFinished, New EventHandler(AddressOf device_ScanFinished)
    
                ' disable UI
                device1.ShowUI = False
    
                ' set Memory (or Native) transfer mode
                device1.TransferMode = TransferMode.Memory
    
                ' acquire images asynchronously
                device1.Acquire()
            Catch ex As TwainException
                MessageBox.Show(ex.Message)
            End Try
        End Sub
    
        ''' <summary>
        ''' Image is acquired.
        ''' </summary>
        Private Sub device_ImageAcquired(ByVal sender As Object, ByVal e As Vintasoft.Twain.ImageAcquiredEventArgs)
            Dim device As Device = DirectCast(sender, Device)
    
            ' set settings of PDF encoder
            Dim pdfEncoderSettings As New TwainPdfEncoderSettings()
            pdfEncoderSettings.PdfDocumentInfo.Author = "VintaSoft Ltd."
            pdfEncoderSettings.PdfDocumentInfo.Title = "Documents acquired from " + device.Info.ProductName
            pdfEncoderSettings.PdfDocumentInfo.Creator = "VintaSoft Twain .NET SDK"
            pdfEncoderSettings.PdfDocumentInfo.ModificationDate = DateTime.Now
    
            ' add acquired image to an existing PDF document
            e.Image.Save("d:\test.pdf", pdfEncoderSettings)
    
            ' dispose the acquired image
            e.Image.Dispose()
        End Sub
    
        ''' <summary>
        ''' Scan is canceled.
        ''' </summary>
        Private Sub device_ScanCanceled(ByVal sender As Object, ByVal e As EventArgs)
            MessageBox.Show("Scan is canceled.")
        End Sub
    
        ''' <summary>
        ''' Scan is failed.
        ''' </summary>
        Private Sub device_ScanFailed(ByVal sender As Object, ByVal e As Vintasoft.Twain.ScanFailedEventArgs)
            MessageBox.Show("Scan is failed: " + Convert.ToString(e.ErrorString))
        End Sub
    
        ''' <summary>
        ''' Scan is finished.
        ''' </summary>
        Private Sub device_ScanFinished(ByVal sender As Object, ByVal e As EventArgs)
            Dim device1 As Device = DirectCast(sender, Device)
    
            ' unsubscribe from device events
            RemoveHandler device1.ImageAcquired, New EventHandler(Of ImageAcquiredEventArgs)(AddressOf device_ImageAcquired)
            RemoveHandler device1.ScanCanceled, New EventHandler(AddressOf device_ScanCanceled)
            RemoveHandler device1.ScanFailed, New EventHandler(Of ScanFailedEventArgs)(AddressOf device_ScanFailed)
            RemoveHandler device1.ScanFinished, New EventHandler(AddressOf device_ScanFinished)
    
            ' if device is not closed
            If device1.State <> DeviceState.Closed Then
                ' close the device
                device1.Close()
            End If
    
            MessageBox.Show("Scan is finished.")
        End Sub
    
    End Class
                  
    
    // The project, which uses this code, must have references to the following assemblies:
    // - Vintasoft.Twain
    
    using System;
    using System.Windows.Forms;
    using Vintasoft.Twain;
    using Vintasoft.Twain.ImageEncoders;
    
    namespace TwainExamples_CSharp
    {
        /// <summary>
        /// Class allows to scan and save image to a PDF document.
        /// </summary>
        public partial class How_to_save_acquired_images_to_PDF_document : Form
        {
    
            /// <summary>
            /// TWAIN device manager.
            /// </summary>
            DeviceManager _deviceManager;
    
    
    
            public How_to_save_acquired_images_to_PDF_document()
            {
                InitializeComponent();
    
                // create and open device manager
                _deviceManager = new DeviceManager(this);
                _deviceManager.Open();
            }
    
    
    
            /// <summary>
            /// Acquire images asynchronously.
            /// </summary>
            public void AcquireImagesAsynchronously()
            {
                try
                {
                    // get reference to the default device
                    Device device = _deviceManager.DefaultDevice;
    
                    // subscribe to the device events
                    device.ImageAcquired += new EventHandler<ImageAcquiredEventArgs>(device_ImageAcquired);
                    device.ScanCanceled += new EventHandler(device_ScanCanceled);
                    device.ScanFailed += new EventHandler<ScanFailedEventArgs>(device_ScanFailed);
                    device.ScanFinished += new EventHandler(device_ScanFinished);
    
                    // disable UI
                    device.ShowUI = false;
    
                    // set Memory (or Native) transfer mode
                    device.TransferMode = TransferMode.Memory;
    
                    // acquire images asynchronously
                    device.Acquire();
                }
                catch (TwainException ex)
                {
                    MessageBox.Show(ex.Message);
                }
            }
    
            /// <summary>
            /// Image is acquired.
            /// </summary>
            private void device_ImageAcquired(object sender, Vintasoft.Twain.ImageAcquiredEventArgs e)
            {
                Device device = (Device)sender;
    
                // set settings of PDF encoder
                TwainPdfEncoderSettings pdfEncoderSettings = new TwainPdfEncoderSettings();
                pdfEncoderSettings.PdfDocumentInfo.Author = "VintaSoft Ltd.";
                pdfEncoderSettings.PdfDocumentInfo.Title = "Documents acquired from " + device.Info.ProductName;
                pdfEncoderSettings.PdfDocumentInfo.Creator = "VintaSoft Twain .NET SDK";
                pdfEncoderSettings.PdfDocumentInfo.ModificationDate = DateTime.Now;
    
                // add acquired image to an existing PDF document
                e.Image.Save(@"d:\test.pdf", pdfEncoderSettings);
    
                // dispose the acquired image
                e.Image.Dispose();
            }
    
            /// <summary>
            /// Scan is canceled.
            /// </summary>
            private void device_ScanCanceled(object sender, EventArgs e)
            {
                MessageBox.Show("Scan is canceled.");
            }
    
            /// <summary>
            /// Scan is failed.
            /// </summary>
            private void device_ScanFailed(object sender, Vintasoft.Twain.ScanFailedEventArgs e)
            {
                MessageBox.Show("Scan is failed: " + e.ErrorString);
            }
    
            /// <summary>
            /// Scan is finished.
            /// </summary>
            void device_ScanFinished(object sender, EventArgs e)
            {
                Device device = (Device)sender;
    
                // unsubscribe from device events
                device.ImageAcquired -= new EventHandler<ImageAcquiredEventArgs>(device_ImageAcquired);
                device.ScanCanceled -= new EventHandler(device_ScanCanceled);
                device.ScanFailed -= new EventHandler<ScanFailedEventArgs>(device_ScanFailed);
                device.ScanFinished -= new EventHandler(device_ScanFinished);
    
                // if device is not closed
                if (device.State != DeviceState.Closed)
                    // close the device
                    device.Close();
    
                MessageBox.Show("Scan is finished.");
            }
    
        }
    }