Acquired image can be saved to a new PDF document or added to an existing PDF document.
Here is an example that demonstrates how to add acquired images to a PDF document:
' The project, which uses this code, must have references to the following assemblies: ' - Vintasoft.Twain ''' <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 Vintasoft.Twain.DeviceManager Public Sub New() InitializeComponent() ' create and open device manager _deviceManager = New Vintasoft.Twain.DeviceManager(Me) _deviceManager.Open() End Sub ''' <summary> ''' Acquire images asynchronously. ''' </summary> Public Sub AcquireImagesAsynchronously() Try ' get reference to the default device Dim device1 As Vintasoft.Twain.Device = _deviceManager.DefaultDevice ' subscribe to the device events AddHandler device1.ImageAcquired, New EventHandler(Of Vintasoft.Twain.ImageAcquiredEventArgs)(AddressOf device_ImageAcquired) AddHandler device1.ScanCanceled, New EventHandler(AddressOf device_ScanCanceled) AddHandler device1.ScanFailed, New EventHandler(Of Vintasoft.Twain.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 = Vintasoft.Twain.TransferMode.Memory ' acquire images asynchronously device1.Acquire() Catch ex As Vintasoft.Twain.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 Vintasoft.Twain.Device = DirectCast(sender, Vintasoft.Twain.Device) ' set settings of PDF encoder Dim pdfEncoderSettings As New Vintasoft.Twain.ImageEncoders.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 Vintasoft.Twain.Device = DirectCast(sender, Vintasoft.Twain.Device) ' unsubscribe from device events RemoveHandler device1.ImageAcquired, New EventHandler(Of Vintasoft.Twain.ImageAcquiredEventArgs)(AddressOf device_ImageAcquired) RemoveHandler device1.ScanCanceled, New EventHandler(AddressOf device_ScanCanceled) RemoveHandler device1.ScanFailed, New EventHandler(Of Vintasoft.Twain.ScanFailedEventArgs)(AddressOf device_ScanFailed) RemoveHandler device1.ScanFinished, New EventHandler(AddressOf device_ScanFinished) ' if device is not closed If device1.State <> Vintasoft.Twain.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 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 : System.Windows.Forms.Form { /// <summary> /// TWAIN device manager. /// </summary> Vintasoft.Twain.DeviceManager _deviceManager; public How_to_save_acquired_images_to_PDF_document() { InitializeComponent(); // create and open device manager _deviceManager = new Vintasoft.Twain.DeviceManager(this); _deviceManager.Open(); } /// <summary> /// Acquire images asynchronously. /// </summary> public void AcquireImagesAsynchronously() { try { // get reference to the default device Vintasoft.Twain.Device device = _deviceManager.DefaultDevice; // subscribe to the device events device.ImageAcquired += new System.EventHandler<Vintasoft.Twain.ImageAcquiredEventArgs>(device_ImageAcquired); device.ScanCanceled += new System.EventHandler(device_ScanCanceled); device.ScanFailed += new System.EventHandler<Vintasoft.Twain.ScanFailedEventArgs>(device_ScanFailed); device.ScanFinished += new System.EventHandler(device_ScanFinished); // disable UI device.ShowUI = false; // set Memory (or Native) transfer mode device.TransferMode = Vintasoft.Twain.TransferMode.Memory; // acquire images asynchronously device.Acquire(); } catch (Vintasoft.Twain.TwainException ex) { System.Windows.Forms.MessageBox.Show(ex.Message); } } /// <summary> /// Image is acquired. /// </summary> private void device_ImageAcquired(object sender, Vintasoft.Twain.ImageAcquiredEventArgs e) { Vintasoft.Twain.Device device = (Vintasoft.Twain.Device)sender; // set settings of PDF encoder Vintasoft.Twain.ImageEncoders.TwainPdfEncoderSettings pdfEncoderSettings = new Vintasoft.Twain.ImageEncoders.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 = System.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, System.EventArgs e) { System.Windows.Forms.MessageBox.Show("Scan is canceled."); } /// <summary> /// Scan is failed. /// </summary> private void device_ScanFailed(object sender, Vintasoft.Twain.ScanFailedEventArgs e) { System.Windows.Forms.MessageBox.Show("Scan is failed: " + e.ErrorString); } /// <summary> /// Scan is finished. /// </summary> void device_ScanFinished(object sender, System.EventArgs e) { Vintasoft.Twain.Device device = (Vintasoft.Twain.Device)sender; // unsubscribe from device events device.ImageAcquired -= new System.EventHandler<Vintasoft.Twain.ImageAcquiredEventArgs>(device_ImageAcquired); device.ScanCanceled -= new System.EventHandler(device_ScanCanceled); device.ScanFailed -= new System.EventHandler<Vintasoft.Twain.ScanFailedEventArgs>(device_ScanFailed); device.ScanFinished -= new System.EventHandler(device_ScanFinished); // if device is not closed if (device.State != Vintasoft.Twain.DeviceState.Closed) // close the device device.Close(); System.Windows.Forms.MessageBox.Show("Scan is finished."); } } }