Testimonios


Got it downloaded and we will put that to work right away! We purchased a .Net twain control set for a custom written application using cameras about three years ago. We found Vintasoft in an Internet search. When we updating the software, we purchased the newer version that we needed.

Our developer had said it was well written code. Thank you once again.

Peter Philbrick
IT Director | ComCor, Inc.





VintaSoftTwain.NET SDK - FAQ

Cuestiones generales:

 

Redistribución:

 

Ventas:

 

Programación:

 

Web:

 

Bases de datos:

 

 

¿Para qué fines puedo utilizar la SDK VintaSoftTwain.NET?

Puede utilizar esta biblioteca para dirigir el trabajo del escáner, de cámaras digitales y web y otros dispositivos que sostienen el standard TWAIN.

 


 

¿Qué incluye esta biblioteca?

La SDK incluye:

  • Fichero Vintasoft.Twain.dll - 100% compatible .NET componente
  • Documentación en formato MS Help Workshop (fichero Help\Vintasoft.Twain.chm)
  • Los ejemplos para MS Visual Basic.NET, MS Visual C#, ASP.NET (el catálogo Examples)
  • Demos para sistemas de 32-bits (Bin\v2.0\x86 y Bin\v4.0\x86 directorios)
  • Demos para sistemas de 64-bits (Bin\v2.0\x64 y Bin\v4.0\x64 directorios)

 

 

¿En qué lenguaje de programación puedo utilizar esta biblioteca?

La licencia del desarrollador y la licencia de la compañía permiten utilizar este componente en:

  • Microsoft Visual Studio .NET : Visual Basic, Visual C#, Visual C++, Visual J#
  • Borland Delphi 8.0, Borland C# Builder, Borland C++ BuilderX
  • en todos lenguajes de programación y anexos compatibles con .NET tecnología.

La licencia del servidor permite utilizar este componente en:

  • Internet Explorer : ASP.NET, JavaScript, VBScript

 

 

¿Qué límites tiene la versión no registrada de la biblioteca?

Los límites de la versión no registrada de la biblioteca:

  • nagware
  • cada imagen se puede guardar al disco o cargar como file BMP
  • solo la imagen en negro y blanco o en gris puede ser guardado al disco o cargado al servidor como fichero JPEG o TIFF

Todos estos límites están borrados de la versión registrada del componente.

 

 

No he encontrado la respuesta a mi pregunta. ¿Qué debo hacer?

Puede encontrar la información sobre la mayoria de las preguntas en la documentación o en este FAQ. Si no ha encontrado la respuesta a su pregunta, escriba al Servicio de apoyo técnico.

 

 

¿Qué ficheros debo incluir en distribución de mi programa?

Tiene que incluir solo un fichero: Vintasoft.Twain.dll. A la instalación de su programa hay que insertar estos ficheros en el catálogo que tiene la referencia aparecida durante la compilación del programa.

 

 

¿Puedo distribuir componente VintaSoftTwain.NET junto con mi aplicación sin algun pago complementario?

Si, puede distribuir componente VintaSoftTwain.NET junto con su aplicación. Paga solamente por el registro inicial. La licencia de la compañía no tiene límites en la distribucion. La licencia del desarrollador tiene ciertos límites en la distribución. La redistribución de la licencia para servidor no es libre de derechos. Por favor, vea el contrato de licencia.

 

 

¿Qué hacer si la redistribución de mi aplicación que está creado sobre la base de la licencia del desarrollador puede ser superior 100 copias en el año en curso?

Si posee la licencia del desarrollador y redistribución de su aplicación puede ser superior 100 copias en el año en curso, Ud. debe contactar Ventas "VintaSoft". Ud. proveerá de oportunidad actualizar su licencia del desarrollador a la licencia de la compañía con 30% descuento o comprar la segunda licencia del desarrollador.

 

 

¿Qué diferencias son entre la licencia del desarrollador y la licencia de la compañía (sitio)?

  • La licencia del desarrollador debe ser utilizado en desarrollo de software por sólo un desarrollador, que nombre es indicado en los datos de licencia.
  • La licencia de la compañía debe ser utilizado en desarrollo de software por cualquier desarrollador de la compañía, que nombre es indicado en los datos de licencia.
  • La licencia del desarrollador puede ser utilizado en desarrollo de software en cualquier computador ubicado en cualquier dirección física.
  • La licencia de la compañía puede ser utilizado en desarrollo de software en cualquier computador ubicado en una sola dirección física (en sólo una oficina).
  • La licencia del desarrollador permite la redistribución de aplicación que integra los ensamblados SDK redistribuibles no más de 100 copias en el año.
  • La licencia de la compañía permite la redistribución de aplicación ilimitada, que integra los ensamblados SDK redistribuibles.

 

 

¿Puedo actualizar la licencia "Standard edition" de la licencia "Standard + WPF edition" equivalente?

Sí, por favor contacte Ventas y Ud. proveerá de oportunidad comprar la licencia "Standard + WPF edition" equivalente con 70% descuento.

 

 

¿Hay la diferencia en utilizando mi aplicación en Desktop PC o en Server?

Si, hay. Por favor lea la sección "Deploying" en documentación de este producto para que comprender la diferencia.

Los terminos: Desktop PC – SO Windows XP, Vista, 7 está instalado. Server – SO Windows Server 2000, 2003, 2008 está instalado.

 

 

¿Cómo puedo añadir el componente Vintasoft.Twain.DeviceManager al formulario de la aplicación?

Para añadir el componente VintaSoft.Twain.DeviceManager a la forma hay que hacer lo siguiente:

  • Abrir su proyecto en Visual Studio .NET
  • Abrir la forma necesaria
  • Abrir el panel "Toolbox"
  • Apretar el botón derecho del ratón al panel "Toolbox"
  • Elegir el punto del menú "Customize Toolbox..." del menú aparecido
  • Abrir el señal .NET Framework Components
  • Apretar el botón "Browse..." y elegir el fichero Vintasoft.Twain.dll
  • Elegir y marcar el componente VintaSoft.Twain
  • Cerrar la ventana apretando el botón "Ok"
  • Encontrar y elegir el objeto VintaSoft.Twain.DeviceManager al panel "Toolbox"
  • Instalar el componente VintaSoft.Twain.DeviceManager a la forma

 

 

¿Cómo puedo recibir las imágenes en negro y blanco (documentación)?

Esto es el ejemplo del código para recibir las imágenes en negro y blanco:

  [VB.NET]
  Dim _device As Vintasoft.Twain.Device
  ...

  Private Sub AcquireBlackWhiteImages()
      _device.ShowUI = False
      _device.DisableAfterAcquire = True

      ' open the device
      _device.Open()
      ' set necessary pixel type
      _device.PixelType = PixelType.BW

      ' acquire images from device
      _device.Acquire()
  End Sub

 

 

¿Puedo dirigir el Alimentador automático de documentos (ADF) sin interface del usuario?

Aquí está un ejemplo que muestra como se puede asincronamente recibir los imágenes de ADF:

  [VB.NET]
  Dim _device As Vintasoft.Twain.Device
  ...

  Private Sub AcquireImagesFromAdf()
      ' set scan settings
      _device.ShowUI = False
      _device.DisableAfterAcquire = True
      _device.Open()
      _device.PixelType = PixelType.RGB
      _device.UnitOfMeasure = UnitOfMeasure.Inches
      _device.Resolution = New Resolution(200, 200)

      ' set document feeder settings
      If _device.DocumentFeeder.Present Then
          _device.DocumentFeeder.Enabled = True
          _device.XferCount = -1

          ' enable duplex if possible
          If _device.DocumentFeeder.DuplexMode <> DuplexMode.None Then
              _device.DocumentFeeder.DuplexEnabled = True
          End If

          ' acquire images from device
          If _device.DocumentFeeder.PaperDetectable Then
              If _device.DocumentFeeder.Loaded Then
                  _device.Acquire()
              End If
          Else
              _device.Acquire()
          End If
      End If
  End Sub

  ' Handler of the ImageAcquired event.
  Private Sub _device_ImageAcquired(ByVal sender As System.Object, _
                                    ByVal e As Vintasoft.Twain.ImageAcquiredEventArgs)
      e.Image.Save("c:\multipage.tif")
  End Sub

  ' Handler of the ScanCompleted event.
  Private Sub _device_ScanCompleted(ByVal sender As System.Object, _
                                    ByVal e As System.EventArgs)
      ' do not close the device if UI is used
      If Not _device.ShowUI Then
          _device.Close()
          MsgBox("Scan completed.")
      End If
  End Sub

 

 

¿Puedo dirigir el Alimentador automático de documentos (ADF) sin interface del usuario y sin evento PostScan?

Aquí está un ejemplo que muestra como se puede sincronamente recibir los imágenes del dispositivo:

  [VB.NET]
  Friend Shared Sub Main(args As String())
      Try
          Using deviceManager As New DeviceManager()
              ' open the device manager
              deviceManager.Open()

              ' get reference to the current device
              Dim device As Device = deviceManager.CurrentDevice

              ' open the device
              device.Open()

              ' set acquisition parameters
              device.TransferMode = TransferMode.Memory
              device.ShowUI = False
              device.DisableAfterAcquire = True
              device.PixelType = PixelType.BW

              ' create directory for TIFF file
              Dim directoryForImages As String = _
                  Path.GetDirectoryName(Directory.GetCurrentDirectory())
              directoryForImages = Path.Combine(directoryForImages, "Images")
              If Not Directory.Exists(directoryForImages) Then
                  Directory.CreateDirectory(directoryForImages)
              End If

              Dim multipageTiffFilename As String = Path.Combine(directoryForImages, _
                                                                 "multipage.tif")

              ' acquire image(s) from the device
              Dim acquireModalState1 As AcquireModalState = AcquireModalState.None
              Dim imageIndex As Integer = 0
              Do
                  acquireModalState1 = device.AcquireModal()
                  Select Case acquireModalState1
                      Case AcquireModalState.ImageAcquired
                          ' save image to file
                          device.AcquiredImages.Last.Save(multipageTiffFilename)
                          ' output current state
                          imageIndex = imageIndex + 1
                          Console.WriteLine(String.Format("Image{0} is saved.", _
                                                          imageIndex))

                      Case AcquireModalState.ScanCompleted
                          ' close device and device manager
                          CloseDeviceAndDeviceManager(deviceManager, device)
                          ' output current state
                          Console.WriteLine("Scan completed.")

                      Case AcquireModalState.ScanCanceled
                          ' close device and device manager
                          CloseDeviceAndDeviceManager(deviceManager, device)
                          ' output current state
                          Console.WriteLine("Scan canceled.")

                      Case AcquireModalState.ScanFailed
                          ' close device and device manager
                          CloseDeviceAndDeviceManager(deviceManager, device)
                          ' output current state
                          Console.WriteLine(String.Format("Scan failed: {0}", _
                                                          deviceManager.ErrorString))
                  End Select
              Loop While acquireModalState1 <> AcquireModalState.None
          End Using
      Catch ex As TwainException
          Console.WriteLine("Error: " + ex.Message)
      End Try

      Console.ReadLine()
  End Sub

  ' Close device and device manager.
  Private Shared Sub CloseDeviceAndDeviceManager(deviceManager As DeviceManager, _
                                                 device As Device)
      If device.State = DeviceState.Opened Then
          ' close the device
          device.Close()
      End If

      ' close the device manager
      deviceManager.Close()
  End Sub

 

 

Tengo que escanear solamente una parte de la imagen. ¿Qué debo hacer?

Aquí está un ejemplo que muestra como se puede recibir solamente la parte superior de la página:

  [VB.NET]
  Private Sub AcquirePartOfImage()
      Using deviceManager As New DeviceManager()
          Try
              ' open the device manager
              deviceManager.Open()

              deviceManager.SelectDevice()

              ' get reference to current device
              Dim device As Device = deviceManager.CurrentDevice

              ' open the device
              device.Open()

              ' set acquisition parameters
              device.ShowUI = False
              device.DisableAfterAcquire = True
              ' set image layout (get only the top half of the page)
              device.UnitOfMeasure = UnitOfMeasure.Inches
              Dim imageLayout As System.Drawing.RectangleF = device.ImageLayout.Get()
              device.ImageLayout.Set(0, 0, imageLayout.Width, imageLayout.Height / 2)

              Dim tiffFilename As String = Path.Combine(Directory.GetCurrentDirectory(), _
                                                        "multipage.tif")

              ' acquire images from device
              Dim acquireModalState1 As AcquireModalState = AcquireModalState.None
              Do
                  acquireModalState1 = device.AcquireModal()
                  Select Case acquireModalState1
                      Case AcquireModalState.ImageAcquired
                          ' save acquired image to multipage TIFF file
                          device.AcquiredImages.Last.Save(tiffFilename)

                      Case AcquireModalState.ScanCompleted, _
                           AcquireModalState.ScanCanceled, _
                           AcquireModalState.ScanFailed
                          ' close the device
                          device.Close()
                          ' close the device manager
                          deviceManager.Close()
                  End Select
              Loop While acquireModalState1 <> AcquireModalState.None
          Catch ex As TwainException
              Console.WriteLine("Error: " + ex.Message)
              Console.ReadLine()
          End Try
      End Using
  End Sub

 

 

¿Puedo elegir el dispositivo necesario sin diálogo estandartizado de la elección del dispositivo?

Aquí está un ejemplo que muestra como se puede elegir el dispositivo por su nombre:

  [VB.NET]
  Private Sub SelectDeviceByName(ByVal deviceName As String)
      ' create TWAIN device manager
      Using deviceManager As New DeviceManager()
          ' open TWAIN device manager
          deviceManager.Open()

          ' select the device by device name
          Dim device As Device = Nothing
          For i As Integer = 0 To deviceManager.Devices.Length - 1
              If deviceManager.Devices(i).Info.ProductName = deviceName Then
                  deviceManager.CurrentDeviceIndex = i
                  device = deviceManager.CurrentDevice
                  Exit For
              End If
          Next

          ' throw exception if device is not found
          If device Is Nothing Then
              Throw New ApplicationException("Device is not found.")
          End If

          ' acquire images from the device
          device.Acquire()
      End Using
  End Sub

 


 

¿Cómo puedo desconectar la ventana del indicador del proceso del escaneo al recibo de los imágenes sin interface del usuario?

El estandard TWAIN permite desconectar la ventana del indicador del proceso del escaneo, si el interface del usuario no se utilice (ShowUI=False). Se puede hacer de la manera siguente:

  [VB.NET]
  Dim _device As Vintasoft.Twain.Device
  ...

  Private Sub AcquireImagesWithoutUiAndIndicator()
      _device.ShowUI = False
      _device.ShowIndicators = False
      _device.DisableAfterAcquire = True

      ' acquire images from device
      _device.Acquire()
  End Sub

 

 

Quiero crear mi propio indicador del proceso del escaneo. ¿Es possible?

Si, es possible, si la imagen se transmite del escaner al anexo por medio de la memoria (Memory transfer). Para crear su indicador del proceso del escaneo es necesario utilizar el evento ImageAcquiringProgress, por ejemplo:

  [VB.NET]
  Dim _device As Vintasoft.Twain.Device
  ...

  ' Handler of the Device.ImageAcquiringProgress event
  Private Sub _device_ImageAcquiringProgress(ByVal sender As System.Object, _
                      ByVal e As Vintasoft.Twain.ImageAcquiringProgressEventArgs)
      ProgressBar1.Value = e.Progress
  End Sub

 

 

¿Cómo puedo instalar la resolución diferente para los ejes X y Y durante el escaneo de imágenes?

Esto es el ejemplo donde la resolución para el eje X es 200 dpi, y para el eje Y 400 dpi:

  [VB.NET]
  Dim _device As Vintasoft.Twain.Device
  ...

  Private Sub AcquireBlackWhiteImages()
      _device.ShowUI = False
      _device.DisableAfterAcquire = True

      ' open the device
      _device.Open()
      ' set scan settings
      _device.PixelType = PixelType.BW
      _device.UnitOfMeasure = UnitOfMeasure.Inches
      _device.Resolution = New Resolution(200, 400)

      ' acquire images from device
      _device.Acquire()
  End Sub

 

 

Nuestra organización utilice el escaneo de la red con el Alimentador automático de documentos (ADF) y procesamos mucha documentación cada dia. ¿Cómo podemos automatizar nuestro trabajo? Quisieramos guardar cada documento en el fichero separado.

Puede utilizar la página en blanco para dividir los documentos y definir las páginas en blanco con ayuda del método AcquiredImage.IsBlank. Por ejemplo:

  [VB.NET]
  Dim _device As Vintasoft.Twain.Device
  Dim _documentCounter as Integer
  ...

  Private Sub AcquireImages()
      ' set scan settings
      _device.ShowUI = False
      _device.DisableAfterAcquire = True
      _device.Open()
      _device.PixelType = PixelType.BW
      _device.UnitOfMeasure = UnitOfMeasure.Inches
      _device.Resolution = New Resolution(300, 300)

      ' set settings of the internal image buffer
      _device.AcquiredImages.Capacity = 1
      _device.AcquiredImages.AutoClean = True
      _device.AcquiredImages.TiffMultiPage = True        
      _device.AcquiredImages.TiffCompression = TiffCompression.Auto

      ' set document feeder settings
      If _device.DocumentFeeder.Present Then
          _device.DocumentFeeder.Enabled = True
          _device.XferCount = -1

          ' enable duplex if possible
          If _device.DocumentFeeder.DuplexMode <> DuplexMode.None Then
              _device.DocumentFeeder.DuplexEnabled = True
          End If

          ' acquire images from device
          If _device.DocumentFeeder.PaperDetectable Then
              If _device.DocumentFeeder.Loaded Then
                  _device.Acquire()
              End If
          Else
              _device.Acquire()
          End If
      End If
  End Sub

  ' Handler of the ImageAcquired event.
  Private Sub _device_ImageAcquired(ByVal sender As System.Object, _
                      ByVal e As Vintasoft.Twain.ImageAcquiredEventArgs)
        If e.Image.IsBlank() Then
            _documentCounter = _documentCounter + 1
        End If
        Try
            e.Image.Save("c:\documents\doc" + Str(_documentsCounter) + ".pdf")
        Catch ex As PdfException
            MsgBox(ex.Message)
        End Try
  End Sub

  ' Handler of the ScanCompleted event.
  Private Sub _device_ScanCompleted(ByVal sender As System.Object, _
                                    ByVal e As System.EventArgs)
      ' do not close the device if UI is used
      If Not _device.ShowUI Then
          _device.Close()
          MsgBox("Scan completed.")
      End If
  End Sub

 

 

¿Puedo utilizar el código patch para dividir los trabajos de serie? Y ¿Cómo puedo determinar el final del trabajo de serie?

Puede dividir los trabajos de serie, utilice la opción CAP_JOBCONTROL.
Esto es el ejemplo para Visual Basic .NET:

  [VB.NET]
  Imports Vintasoft.Twain

  Dim _deviceManager As DeviceManager
  Dim _device As Device
  Dim _jobCounter As Integer = -1

  Private Sub ScanWithJobControlButton_Click(ByVal sender As System.Object, _
                                       ByVal e As System.EventArgs) _
                                       Handles ScanWithJobControlButton.Click
      Try
          ' create and open device manager
          _deviceManager = New DeviceManager(Me)
          _deviceManager.Open()

          ' get reference to current device
          _device = _deviceManager.CurrentDevice
          ' create handlers of events
          AddHandler _device.ImageAcquired, AddressOf _device_ImageAcquired
          AddHandler _device.ScanCompleted, AddressOf _device_ScanCompleted
          AddHandler _device.ScanCanceled, AddressOf _device_ScanCanceled
          AddHandler _device.ScanFailed, AddressOf _device_ScanFailed

          ' set scanning settings
          _device.ShowUI = False
          _device.DisableAfterAcquire = True
          _device.AcquiredImages.Capacity = 1
          _device.AcquiredImages.TiffMultiPage = True
          _device.Open()
          _device.JobControl = JobControl.DetectAndIncludeJobSeparatorAndContinueScanning
          _jobCounter = _jobCounter + 1

          ' acquire images from device
          _device.Acquire()
      Catch ex As TwainException
          MsgBox(ex.Message)
      End Try
  End Sub
 
  Private Sub _device_ImageAcquired(ByVal sender As System.Object, _
                                    ByVal e As Vintasoft.Twain.ImageAcquiredEventArgs)
      If _device.EndOfJob Then
          _jobCounter = _jobCounter + 1
      Else
          Try
              e.Image.Save("c:\job" + Str(_jobCounter) + ".tif")
          Catch ex As ImageProcessingException
              MsgBox(ex.Message)
          End Try
      End If
  End Sub

  Private Sub _device_ScanCompleted(ByVal sender As System.Object, _
                                    ByVal e As System.EventArgs)
      _device.Close()
      MsgBox("Scan completed.")
  End Sub

  Private Sub _device_ScanCanceled(ByVal sender As System.Object, _
                                   ByVal e As System.EventArgs)
      _device.Close()
      MsgBox("Scan canceled.")
  End Sub

  Private Sub _device_ScanFailed(ByVal sender As System.Object, _
                                 ByVal e As Vintasoft.Twain.ScanFailedEventArgs)
      _device.Close()
      MsgBox("Scan failed: " + e.ErrorString)
  End Sub

 

 

¿Puedo salvar imágenes adquiridas en un documento PDF?

Si, Ud. puede hacerlo. Las imágenes adquiridas pueden ser salvadas en nuevo documento PDF o anadidas en documento PDF que ya existe.
Aqui está un ejemplo para VB.NET:

  [VB.NET]
  Dim _device As Vintasoft.Twain.Device
  ...

  ' set settings of PDF document
  _device.AcquiredImages.PdfMultiPage = True
  _device.AcquiredImages.PdfDocumentInfo.Author = "VintaSoft Ltd."
  _device.AcquiredImages.PdfDocumentInfo.Title = "Documents acquired from " + _
                                                 _device.Info.ProductName
  _device.AcquiredImages.PdfDocumentInfo.Creator = "VintaSoftTwain.NET SDK"
  _device.AcquiredImages.PdfDocumentInfo.ModificationDate = DateTime.Now
  ' save the first acquired image as new PDF document
  _device.AcquiredImages(0).Save("c:\test.pdf")
  ' add the second acquired image to existing PDF document
  _device.AcquiredImages(1).Save("c:\test.pdf")
  ' add the third acquired image to existing PDF document
  _device.AcquiredImages(2).Save("c:\test.pdf")

 

 

¿Cómo puedo recibir una información extendida sobre la imagen del escaner?

Este ejemplo demuestra como recibir la información sobre códigos de barras encontrados en la imagen adquirida:

  [VB.NET]
  Private Sub GetExtendedImageInfo()
      Using deviceManager As New DeviceManager()
          Try
              ' open the device manager
              deviceManager.Open()

              deviceManager.SelectDevice()

              ' get reference to current device
              Dim device As Device = deviceManager.CurrentDevice

              ' open the device
              device.Open()

              ' set acquisition parameters
              device.ShowUI = False
              device.DisableAfterAcquire = True

              ' specify that image info is necessary
              device.ExtendedImageInfo.Add(New _
                     ExtendedImageInfo(ExtendedImageInfoId.BarcodeCount))
              device.ExtendedImageInfo.Add(New _
                     ExtendedImageInfo(ExtendedImageInfoId.BarcodeType))
              device.ExtendedImageInfo.Add(New _
                     ExtendedImageInfo(ExtendedImageInfoId.BarcodeTextLength))
              device.ExtendedImageInfo.Add(New _
                     ExtendedImageInfo(ExtendedImageInfoId.BarcodeText))

              Dim tiffFilename As String = Path.Combine(Directory.GetCurrentDirectory(), _
                                                        "multipage.tif")

              ' acquire images from device
              Dim acquireModalState1 As AcquireModalState = AcquireModalState.None
              Do
                  acquireModalState1 = device.AcquireModal()
                  Select Case acquireModalState1
                      Case AcquireModalState.ImageAcquired
                          ' save acquired image to multipage TIFF file
                          device.AcquiredImages.Last.Save(tiffFilename)

                          Dim barcodeCount As ExtendedImageInfo = device.ExtendedImageInfo(0)
                          If barcodeCount.Items IsNot Nothing Then
                              If barcodeCount.Items.Length > 0 Then
                                  If barcodeCount.Items(0) > 0 Then
                                      Dim barcodeType As ExtendedImageInfo = _
                                                         device.ExtendedImageInfo(1)
                                      Dim barcodeTextLength As ExtendedImageInfo = _
                                                               device.ExtendedImageInfo(2)
                                      Dim barcodeText As ExtendedImageInfo = _
                                                         device.ExtendedImageInfo(3)
                                      Dim infoString As String
                                      For i As Integer = 0 To barcodeCount.Items(0) - 1
                                          infoString = ""
                                          If barcodeType.IsValid Then
                                              infoString = "BarcodeType=" + _
                                                            barcodeType.Items(i) + " "
                                          Else
                                              infoString = "BarcodeType=Undefined "
                                          End If
                                          If barcodeText.IsValid Then
                                              infoString = "BarcodeText='" + _
                                                           barcodeText.StringItems(i) + "'"
                                          Else
                                              infoString = "BarcodeText=Undefined "
                                          End If
                                          Console.WriteLine(infoString)
                                      Next
                                  End If
                              End If
                          End If

                      Case AcquireModalState.ScanCompleted, AcquireModalState.ScanCanceled, _
                                                            AcquireModalState.ScanFailed
                          ' close the device
                          device.Close()
                          ' close the device manager
                          deviceManager.Close()
                  End Select
              Loop While acquireModalState1 <> AcquireModalState.None
          Catch ex As TwainException
              Console.WriteLine("Error: " + ex.Message)
              Console.ReadLine()
          End Try
      End Using
  End Sub

 

 

¿Puedo recibir la imagen de 48-bit?

Si. La biblioteca VintaSoftTwain. NET permite recibir las imágenes de color de 48-bit o las imágenes grises de 16-bits.

Aquí está un ejemplo que demuestra como recibir la imagen de color de 48-bpp del escaner sin la interface de usuario:

  [VB.NET]
  Dim _device As Vintasoft.Twain.Device
  ...

  _device.Open()
  _device.PixelType = PixelType.RGB
  _device.BitDepth = 16 ' 16 - for Epson scanners, 48 - for Canon scanners
  _device.Acquire()


Aquí está un ejemplo que demuestra como recibir la imagen de color de 24-bpp del escaner sin la interface de usuario:

  [VB.NET]
  Dim _device As Vintasoft.Twain.Device
  ...

  _device.Open()
  _device.PixelType = PixelType.RGB
  _device.BitDepth = 8 ' 8 - for Epson scanners, 24 - for Canon scanners
  _device.Acquire()


Aquí está un ejemplo que demuestra como recibir la imagen gris de 16-bpp del escaner sin la interface de usuario:

  [VB.NET]
  Dim _device As Vintasoft.Twain.Device
  ...

  _device.Open()
  _device.PixelType = PixelType.Gray
  _device.BitDepth = 16
  _device.Acquire()

 

 

¿Puedo crear el sistema de sesión predefinido para mi escaner de volumen alto?

Si, la biblioteca permite cargar/salvar sistemas de sesión predefinidos para los escaners de medio y alta velocidad.

Aquí está un ejemplo que demuestra como salvar los ajustes de dispositivo corriente en el fichero:

  [VB.NET]
  ...
  _device.Open()
  Dim fs As FileStream = New FileStream("scanner-setup.xml", FileMode.Append, _
                                        FileAccess.Write)
  _device.SaveSettings(fs)
  fs.Close()
  ...


Aquí está un ejemplo que demuestra como cargar ajustes de dispositivo antes salvados en el dispositivo:

  [VB.NET]
  ...
  _device.OpenDataSource()
  Dim fs As FileStream = New FileStream("scanner-setup.xml", FileMode.Open, _
                                        FileAccess.Read)
  _device.LoadSettings(fs)
  fs.Close()
  _device.Acquire()
  ...

 

 

Recibo el mensaje "Cannot initialize the device manager" después de intentar de abrir el administrador de dispositivos. ¿Qué hacer?

Necesita hacer lo siguiente:

  • comprobar si TWAIN DSM está instalado en el sistema utilizando la propiedad DeviceManager.IsTwainAvailable
  • indicar la vía a TWAIN DSM utilizando la propiedad DeviceManager.TwainDllPath
  • cambiar la versión de TWAIN DSM utilizando la propiedad DeviceManager.IsTwain2Compatible.

TWAIN Data Source Manager (DSM) de la versión 1.X es TWAIN_32.DLL, ordinariamente este file está en la carpeta "C:\Windows\" y está incluido en la lista de equipo estándar de todas las versiones de 32 bit de Windows.

TWAIN DSM de la versión 2.X para los sistemas de 32 bit consiste en dos files: TWAINDSM.DLL y TWAINDSM32.MSM. NO está incluido en la lista de equipo estándar de Windows. En los sistemas de 32 bit los files de DSM deben ser puestos en la carpeta "C:\Windows\System32\". En los sistemas de 64 bit los files de DSM deben ser puestos en la carpeta "C:\Windows\SysWow64\".

TWAIN DSM de la versión 2.X para los sistemas de 64 bit consiste en dos files: TWAINDSM.DLL y TWAINDSM64.MSM. NO está incluido en la lista de equipo estándar de Windows. En los sistemas de 64 bit los files de DSM deben ser puestos en la carpeta "C:\Windows\System32\".

La última versión de TWAIN DSM 2.X se puede encontrar aquí: http://www.twain.org o http://sourceforge.net/projects/twain-dsm/files/.

 

 

No veo el escáner en la ventana de elección de TWAIN dispositivos de mi programa pero lo veo en otros programas. ¿Por qué?

Puede compilar su programa con VintaSoftTwain.NET SDK de la versión 7.0 y en la más avanzada en el régimen "Any CPU" y Su programa:

  • funcionará en los sistemas de x32 con TWAIN_32.DLL o TWAINDSM.DLL (x32)
  • funcionará en los sistemas de x64 con TWAINDSM.DLL (x64)

Puede compilar su programa con VintaSoftTwain.NET SDK de la versión 7.0 y en la más avanzada en el régimen "x86" (WOW) y Su programa:

  • funcionará en los sistemas de x32 con TWAIN_32.DLL o TWAINDSM.DLL (x32)
  • funcionará en los sistemas de x64 con TWAIN_32.DLL o TWAINDSM.DLL (x32)

Puede compilar su programa con VintaSoftTwain.NET SDK de la versión 7.0 y en la más avanzada en el régimen "x64" y Su programa:

  • NO funcionará en los sistemas de x32
  • funcionará en los sistemas de x64 con TWAINDSM.DLL (x64)

Recomendamos utilizar el régimen de "x86", porque todos los escáneres tienen los controladores de dispositivos de TWAIN de 32 bit pero sólo escáneres nuevos y profesionales tienen los controladores de dispositivos de TWAIN de 64 bit.

 

 

¿Qué pasos debo dar para añadir la biblioteca a mi proyecto WEB?

Debe hacer lo siguiente al lado de servidor:

  • Insertar el fichero Vintasoft.Twain.dll al servidor.
  • Utilizar el código siguiente en su página web:

    < OBJECT ID="TwainDeviceManager" WIDTH=1 HEIGHT=1
    CLASSID="http://your-server/path-on-server/Vintasoft.Twain.dll#Vintasoft.Twain.DeviceManager"
    CODEBASE="http://your-server/path-on-server/Vintasoft.Twain.dll#version=7,0,0,1">
    < /OBJECT >

    El numero correcto de la versión es muy importante!

  • Registre su aplicación web en el servidor ASP.NET (para más información por favor lea este Microsoft TechNet artículo).
  • Todos deben tener derecho al registro en la dirección del servidor donde están guardadas las imágines cargadas.


Debe hacer lo siguiente al lado del cliente:

  • .NET Framework 2.0 debe estar instalado.
  • Es necesario utilizar Internet Explorer 6.0 y superior o Mozilla Firefox 3.0 y superior con IE Tab Plug-in.
  • Su sitio web debe ser marcado como el sitio seguro en la .NET Framework 2.0 política de seguridad.

    Se puede hacer de la manera sigueinte:

    • Abrir el configurador Microsoft .NET Framework de "Control Panel | Administrative Tools"
    • Elegir "Runtime Security Policy | Machine | Code Groups | All_Code"
    • Apretar el botón al punto "All_Code" y elegir "New", para crear el grupo código nuevo
    • Entrar el nombre del grupo código, por ejemplo My_Web_Site, apretar el botón "seguir"
    • Elegir la opción "Site" para el grupo código
    • Indicar "my_web_site.ru" como el nombre del servidor, apretar el botón "seguir"
    • Instalar el acceso complete (Full Trust) para el grupo código

    Puede encontrar la información en detalle sobre la seguridad .NET Framework en el articulo de MSDN.

    Importante: el conjunto compilado en .NET 4.0 no puede utilizarse en los proyectos web porque .NET Framework 4.0 no permite utilizar los componentes de WinForms en Internet Explorer. Sólo el conjunto compilado en .NET 2.0 puede utilizarse en los proyectos web.

  • Su sitio web debe ser añadido a "Trusted Zone" en Internet Explorer 8.0 y superior.

    Se puede hacer de la manera sigueinte:

    • Abrir Internet Explorer y vaya a "Tools => Internet Options" del menú, se abrirá una ventana.
    • Apretar el botón "Security" y elegir "Trusted Sites" icono. Apretar el botón "Sites", se abrirá una ventana.
    • Ingrese su sitio web en la línea provista. Elimine la marca de la entrada "Require server verification (https:)...." si esto es necesario. Apretar el botón "Add".
    • Apretar el botón "Close". Sitio web que se une a la lista de sitios de confianza.
    Puede encontrar la información en detalle en este artículo How Internet Explorer determines permissions for .NET Framework assemblies.

 

 

Quiero crear el script en mi servidor web, que será utilizado por los usuarios para la instalación automática de los parámetros necesarios de la seguridad.NET Framework al ordenador del usuario. ¿Puedo hacerlo?

Debe crear el script, que iniciará el orden siguiente:


caspol.exe -q -machine -addgroup All_Code -site www.my-company.com FullTrust
-name VSTwain_MyEmpresa_Site
-description "This permission set grants the right to use VintaSoftTwain.NET SDK on www.my-company.com."

 

 

He recibido el aviso "Your .NET Framework Security settings must be configured to run the components in your browser" durante la instalación de mi web anexo. ¿Qué hago no correctamente?

Primeramente hay que ajustar la seguridad .NET Framework como describido aqui.

Pues necesita verificar la versión 2 que utiliza (por ejemplo, 7.0.0.1).

Después debe describir correctamente el objeto OBJECT en su página web. Es muy importante utilizar el numero correcto de la versión!

Esto es el ejemplo:

< OBJECT ID="TwainDeviceManager" WIDTH=1 HEIGHT=1
CLASSID="http://your-server/path-on-server/Vintasoft.Twain.dll#Vintasoft.Twain.DeviceManager"
CODEBASE="http://your-server/path-on-server/Vintasoft.Twain.dll#version=7,0,0,1">
< /OBJECT >

Es todo que debe hacer.

 

 

¿Puedo escanear imágenes y cargarlos al servidor en la aplicación de intranet con la autenticación integrada de Windows?

Si, la biblioteca permite usar cualquier método de autenticación apoyado por .NET Framework.

El ejemplo siguiente ilustra como usar la información de autenticación del usuario que esta conectado actualmente:

  [VB.NET]
  Dim _httpUpload As Vintasoft.Http.HttpUpload
  ...

  _httpUpload.Url = "http://localhost/vstwaindemo/imageupload.aspx"
  _httpUpload.UseDefaultCredentials = True
  ...


El ejemplo siguiente ilustra como usar información de autenticación múltiple:

  [VB.NET]
  Dim _httpUpload As Vintasoft.Http.HttpUpload
  ...

  Dim myCache As New CredentialCache()
  myCache.Add(New Uri("http://www.my-web-server.com/"), "Basic", _
              New NetworkCredential(UserName, SecurelyStoredPassword))
  myCache.Add(New Uri("http://www.my-web-server.com/"), "Digest", _
              New NetworkCredential(UserName, SecurelyStoredPassword, Domain))
  _httpUpload.Credentials = myCache
  ...

 

 

¿Puedo escanear imágenes y cargarlos al servidor web con la autenticación de Formas de Cookieless?

Si, Ud. puede hacerlo, por favor mire el ejemplo 8 y 9 aquí.

 

 

¿Cómo adquirir las imágenes del escáner, guardarlas como flujo PDF y cargarlo al servidor en JavaScript?

Si usa VintaSoftTwain.NET SDK en JavaScript Ud. debe saber lo siguiente:

  • Indizador de clase (Indexer of class) no puede ser accedido de JavaScript, i.e. la línea de código "device.AcquiredImages[0]" es incorrecto en JavaScript
  • JavaScript no sabe nada de la enumeración ImageFileFormat. Aquí está las constantes de enumeración ImageFileFormat: BMP - 0, JPEG - 1, TIFF - 2, PNG - 3, GIF - 4, PDF - 5.
El ejemplo siguiente muestra como guardar las imágenes adquiridas como flujo PDF y cargarlo al servidor desde que todas las imágenes son adquiridas:

  [JavaScript]
  ...

  // acquire image(s) from the device
  var acquireModalState;
  var acquireStatusString = "Scan canceled";
  var mem;
  var firstImage = true;
  do
  {
    acquireModalState = device.AcquireModal();
	      
    // image acquired
    if (acquireModalState == 2)
    {
      if (firstImage)
      {
        // get the first image as PDF stored in the memory
        mem = device.AcquiredImages.Last.GetAsStream(5);
        firstImage = false;
      }
      else
      {
        // add image to PDF stored in the memory
        device.AcquiredImages.Last.SaveToStream(mem, 5);
      }
    }
	      
    // scan completed
    else if (acquireModalState == 3)
    {
      acquireStatusString = "Scan completed";

      // upload data from the memory stream (mem) to the server
      ...
    }

    // scan failed
    else if (acquireModalState == 4)
      acquireStatusString = "Scan failed";

    // scan canceled
    else if (acquireModalState == 5)
      acquireStatusString = "Scan canceled";
  }
  while (acquireModalState != 0)

  ...

 

 

¿Puedo guardar las imágenes adquiridas en la tabla MS SQL del servidor?

Si, puede hacerlo. Por favor, vea el ejemplo 3 de este articulo.

 

 

Quiero salvar imágenes adquiridas como documentos PDF en la base de datos. ¿Puedo hacerlo?

Si, Ud. puede salvar la imagen(es) adquirida a una corriente y adelante salvar datos de corriente a la base de datos.

Aquí está un ejemplo que muestra como salvar cada imagen adquirida como un documento PDF separado en una corriente:

  [VB.NET]
  Dim mem As MemoryStream = _device.AcquiredImages(0).GetAsStream(ImageFileFormat.PDF)


Y aquí está un ejemplo que muestra como salvar todas las imágenes adquiridas como un solo documento PDF en una corriente:

  [VB.NET]
  Dim mem As MemoryStream = _device.AcquiredImage(0).GetAsStream(ImageFileFormat.PDF)
  Dim i As Integer
  For i = 1 To _device.AcquiredImages.Count - 1
      _device.AcquiredImages(i).SaveToStream(mem, ImageFileFormat.PDF)
  Next i