Info del producto


Descripción general

La licensia

FAQ

Forums

Ejemplos

History


Descargas

Versión evaluación

On-line manual

Testimonios





VintaSoftTwain.NET SDK - FAQ

Cuestiones generales:

 

Redistribución:

 

Despliegue:

 

Programación:

 

Web:

 

Bases de datos:

 

 

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

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é inclue esta biblioteca?

La biblioteca incluye:

  • VintaSoft.Twain componente - 100% compatible .NET componente (fichero Vintasoft.Twain.dll)
  • 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)
  • Demo applications for 32-bit systems (files in Bin\v1.1 and Bin\v2.0 directories)
  • Demo applications for 64-bit systems in WOW64 mode (files in Bin\v2.0\64-bit directory)

 

 

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

La licenia elaboradora y la licencia de la companí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 programación y anexos compatibles con с .NET tecnología.

La licencia del server 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:

  • la ventana “Sobre el registro de el programa” aparecerá después cada escaneo del imagen
  • cada imagen se puede guardar al disco o cargar como BMP file
  • solo la imagen en negro u blanco o en gris puede ser guardado al disco o cargado al server como JPEG o TIFF fichero

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

 

 

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

Puede encontrar la información sobre la mayoria de las preguntas en la docamentació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 mi programa de distribuidor?

Tiene que incluir solo un fichero: Vintasoft.Twain.dll. A la instalación de su programa hay que insertar este fichero 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 aplicacion. Paga solamente por el registro inicial. La licencia de la companía no tiene límites en la distribucion. La licencia del elaborador tiene ciertes límites en la distribución. La redistribución del licencia para servidor no es libre de derechos. Por favor, vea el contrato de licencia.

 

 

¿Puede utilizar la biblioteca de VintaSoftTwain.NET en versión de Windows de 64 bit?

Sí, puede utilizar la librería VintaSoftTwain.NET en versión de 64 bit de Windows.

Aquí está la lista de pasos que deben ser ejercitados:

  • Descargar la última versión de Administrador de dispositivos TWAIN en el sitio Web TWAIN (file twaindsm-X.Y.Z.win.bin.zip)
  • Poner twaindsm.dll y twaindsm32.msm (files de "twaindsm-X.Y.Z.win.bin.zip\Twain32" directory) en el catálogo "Windows\SysWow64\"
  • Poner twaindsm.dll y twaindsm64.msm (files de "twaindsm-X.Y.Z.win.bin.zip\Twain64" directory) en el catálogo "Windows\System32\"
  • Indicar vía al Administrador de dispositivos TWAIN en su propia programa:
      ...
      VSTwain1.TwainDllPath = "c:\Windows\SysWow64\twaindsm.dll"
      VSTwain1.IsTwain2Compatible = True
      VSTwain1.StartDevice()
      ...
    

 

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

Para añadir el componente VintaSoft.Twain 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 al panel "Toolbox"
  • Instalar el componente VintaSoft.Twain a la forma

 

 

¿Como puedo recibir las imagenes en negro y blanco (documentación)?

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

  Private Sub StartScan()
      Try
          VSTwain1.StartDevice()
          If VSTwain1.SelectSource() Then
              VSTwain1.OpenDataSource()
              VSTwain1.PixelType = PixelType.BW
              VSTwain1.Acquire()
          End If
      Catch ex As TwainException
          MsgBox(ex.Message)
      End Try
  End Sub

 

 

¿Puedo dirigir la entrega automática de los papeles (ADF) sin interface del usuario?

Esto es el ejemplo que muestra como se puede dirigir el trabajo del escaneo con la entrega automática de los papeles (ADF) sin interface del usuario:

  Private Sub StartScanButton_Click(ByVal sender As Object, _
                       ByVal e As System.EventArgs) _
                       Handles StartScanButton.Click
      Try
          VSTwain1.StartDevice()
          VSTwain1.SelectSource()
          VSTwain1.ShowUI = false
          VSTwain1.DisableAfterAcquire = true
          VSTwain1.MaxImages = 1
          VSTwain1.AutoCleanBuffer = true
          VSTwain1.OpenDataSource()
          VSTwain1.UnitOfMeasure = UnitOfMeasure.Inches
          VSTwain1.PixelType = PixelType.RGB
          VSTwain1.Resolution = 200
          VSTwain1.TiffMultiPage = true
          VSTwain1.TiffCompression = TiffCompression.Auto
          If VSTwain1.Duplex <> DuplexMode.None Then
              VSTwain1.DuplexEnabled = true
          End If
          If VSTwain1.FeederPresent Then
              VSTwain1.FeederEnabled = true
              VSTwain1.AutoFeed = true
              VSTwain1.XferCount = -1
              If VSTwain1.FeederLoaded Then
                  VSTwain1.Acquire()
              Endif
          Endif
      Catch ex As TwainException
          MsgBox(ex.Message)
      End Try
  End Sub

  Private Sub VSTwain1_ImageAcquired(ByVal sender As Object, _
                       ByVal e As System.EventArgs) _
                       Handles VSTwain1.ImageAcquired
      Try
          VStwain1.SaveImage(0,"c:\test.tiff")
      Catch ex As ImagingException
          MsgBox(ex.Message)
      End Try
  End Sub
  
  Private Sub VSTwain1_ScanCompleted(ByVal sender As Object, _
                       ByVal e As System.EventArgs) _
                       Handles VSTwain1.ScanCompleted
      If VSTwain1.ErrorCode <> ErrorCode.None Then
          MsgBox(VSTwain1.ErrorString)
      Else
          MsgBox("Scan process is completed.")
      End If
  End Sub

 

 

¿Puedo dirigir la entrega automática de los papeles (ADF) sin interface del usuario y sin evento PostScan?

Esto es el ejemplo que muestra como se puede dirigir el trabajo del escaneo con la entrega automática de los papeles (ADF) sin interface del usuario y sin evento PostScan:

  Private Sub StartScanButton_Click(ByVal sender As Object, _
                       ByVal e As System.EventArgs) _
                       Handles StartScanButton.Click
      Try
          VSTwain1.StartDevice()
          VSTwain1.SelectSource()
          VSTwain1.ShowUI = false
          VSTwain1.DisableAfterAcquire = true
          VSTwain1.MaxImages = 1
          VSTwain1.AutoCleanBuffer = true
          VSTwain1.OpenDataSource()
          VSTwain1.UnitOfMeasure = UnitOfMeasure.Inches
          VSTwain1.PixelType = PixelType.RGB
          VSTwain1.Resolution = 200
          VSTwain1.TiffMultiPage = true
          VSTwain1.TiffCompression = TiffCompression.Auto
          If VSTwain1.Duplex <> DuplexMode.None Then
              VSTwain1.DuplexEnabled = true   ' enable duplex
          End If
          If VSTwain1.FeederPresent Then
              VSTwain1.FeederEnabled = true
              VSTwain1.AutoFeed = true
              VSTwain1.XferCount = -1
              If VSTwain1.FeederLoaded Then
                  While VSTwain1.AcquireModal()
                      Try
                          VStwain1.SaveImage(0,"c:\test.tiff")
                      Catch ex As TwainException
                          MsgBox(ex.Message)
                      End Try
                  End While
                  VSTwain1.StopDevice()
                  MsgBox "Scan completed."
              Endif
          Endif
      Catch ex As TwainException
          MsgBox(ex.Message)
      End Try
  End Sub

 

 

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

Utilice el código siguiente para adquiridas una parte de la imagen delineada por el rectángulo (0.5,0.5) - (6,8):

  VSTwain1.StartDevice()
  VSTwain1.ShowUI = False
  VSTwain1.OpenDataSource()
  .............
  VSTwain1.UnitOfMeasure = UnitOfMeasure.Inches
  VSTwain1.SetImageLayout(0.5,0.5,6,8)
  VSTwain1.Acquire()

 

 

¿Puedo elegir el dispositivo necesario sin dialogo estandartizado de la elección del dispositivo?

Si. Para la numeración de dispositivos se puede utilizar el codico siguiente:

  VSTwain1.StartDevice()
  For i = 0 To VSTwain1.SourcesCount - 1
      sourceInfo = VSTwain1.GetSourceInfo(i)
      If sourceInfo.IsTwain2Compatible Then
          MsgBox "Device " + sourceInfo.ProductName + _
                 " is TWAIN 2.0 compatible."
      Else
          MsgBox "Device " + sourceInfo.ProductName + _
                 " is not TWAIN 2.0 compatible."
      End If
  Next
Esto es el c código para la elección del primer dispositivo:
  VSTwain1.StartDevice()
  VSTwain1.SourceIndex = 0
  .....
  VSTwain1.Acquire
Pero la mejor variante es la siguiente:
  VSTwain1.StartDevice()
  For i = 0 To VSTwain1.SourcesCount - 1
     If VSTwain1.GetSourceProductName(i) = "Your device name" Then
       VSTwain1.SourceIndex = i
       break
    End If
  Next
  .....
En este caso es necesario saber el nombre correcto del dispositivo.

 


 

¿Como puedo desconectar la ventana del indicador del proceso del escaneo al recibo de los imagenes 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:

  VSTwain1.StartDevice()
  VSTwain1.ShowUI = false
  VSTwain1.DisableAfterAcquire = true
  VSTwain1.MaxImages = 1
  VSTwain1.OpenDataSource()
  VSTwain1.ShowIndicators = 0
  VSTwain1.Acquire()

 

 

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 Progress, por ejemplo:

  Private Sub VSTwain1_ImageProcessingProgress(ByVal sender As Object, _
                       ByVal e As Vintasoft.Twain.ProgressEventArgs) _
                       Handles VSTwain1.Progress
      Select Case e.Action
          Case Action.Deskew
              txtAction.Text = "Deskewing..."
          Case Action.Despecle
              txtAction.Text = "Despeckling..."
          Case Action.BorderDetection
              txtAction.Text = "Border detecting..."
          Case Action.Rotation
              txtAction.Text = "Rotating..."
          Case Action.ImageScan
              txtAction.Text = "Image scan..."
          Case Action.ImageSaving
              txtAction.Text = "Saving image to PDF document..."
      End Select
      progressBar1.Value = e.percentComplete
      e.interrupt = bFinishFlag
  End Sub

 

 

¿Como puedo instalar la resolución diferente para los ejes X y Y durante el escaneo de imagenes?

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

  VSTwain1.StartDevice()
  VSTwain1.ShowUI = false
  VSTwain1.DisableAfterAcquire = true
  VSTwain1.MaxImages = 1
  VSTwain1.OpenDataSource()
  VSTwain1.UnitOfMeasure = UnitOfMeasure.Inches
  VSTwain1.Capability = Capability.IXResolution
  VSTwain1.CapType = CapType.OneValue
  VSTwain1.CapValue = 4800     ' 4800 dpi
  VSTwain1.SetCap()
  VSTwain1.Capability = Capability.IYResolution
  VSTwain1.CapType = CapType.OneValue
  VSTwain1.CapValue = 9600     ' 9600 dpi
  VSTwain1.SetCap()
  VSTwain1.Acquire()

 

 

Quiero inicializar el proceso del escaneo en el hilo conductor separado. ¿Es possible?

Si, es posible, si se utilice el método AcquireModal, por ejemplo para C#:

  .....
  public class Form1 : System.Windows.Forms.Form
  {
    private VSTwain twain=null;

    .....

    private void buttonScanASync_Click(object sender, System.EventArgs e)
    {
      ThreadStart ts = new ThreadStart(this.doScanning);
      Thread t = new Thread(ts);
      t.Name = "Scan-Thread";
      t.Start();
    }

    private void doScanning()
    {
      twain = new VSTwain();
      try
      { 
        twain.StartDevice();
        twain.ShowUI = false;
        if (twain.SelectSource())
        {
          while (twain.AcquireModal())
          {
            pictureBox.Image = twain.GetCurrentImage();
          }
        }
        twain.StopDevice();
      }
      catch (TwainException ex)
      {
        MessageBox.Show(ex.Message);
      }
    }
    .....
  }
  .....

 

 

Nuestra organización utilice el escaneo de la red con la entrega automática de folios (ADF) y procesamos mucha documentación cada dia. ¿Como podemos automatizar nuestro trabajo? Quisieramos guardar cada papel en el fichero saparado.

Puede utilizar la página blanca para dividir los papeles y definir las páginas blancas con ayuda del método IsBlankPage. Por ejemplo:

  Dim documentsCounter as Integer

  ............
  documentsCounter = 0
  ............

  Private Sub StartScan()
      Try
          VSTwain1.StartDevice()
          If VSTwain1.SelectSource() = 1 Then
              VSTwain1.ShowUI = false        
              VSTwain1.DisableAfterAcquire = true
              VSTwain1.MaxImages = 1
              VSTwain1.AutoCleanBuffer = true
              VSTwain1.TiffMultiPage = true          
              VSTwain1.TiffCompression = TiffCompression.Auto
              VSTwain1.OpenDataSource()
              VSTwain1.UnitOfMeasure = UnitOfMeasure.Inches
              VSTwain1.PixelType = PixelType.GRAY
              VSTwain1.Resolution = 200             ' 200 dpi

              If VSTwain1.Duplex <> DuplexMode.None Then
                  VSTwain1.DuplexEnabled = true   
              End If
              If VSTwain1.FeederPresent Then
                  VSTwain1.XferCount = -1
                  VSTwain1.FeederEnabled = true
                  VSTwain1.AutoFeed = true
                  If VSTwain1.FeederLoaded Then
                      VSTwain1.Acquire()
                  End If
              End If
          End If
      Catch ex As TwainException
          MsgBox(ex.Message)
      End Try
  End Sub

  Private Sub VSTwain1_ImageAcquired(ByVal sender As Object, _
                       ByVal e As System.EventArgs) _
                       Handles VSTwain1.ImageAcquired
      If VSTwain1.IsBlankImage(0) Then              ' check the first image (page)

          documentsCounter = documentsCounter + 1
      End If
      Try
          VStwain1.SaveImage(0,"c:\documents\doc"+Str(documentsCounter)+".pdf")
      Catch ex As PdfException
          MsgBox(ex.Message)
      End Try
  End Sub
  
  Private Sub VSTwain1_ScanCompleted(ByVal sender As Object, _
                       ByVal e As System.EventArgs) _
                       Handles VSTwain1.ScanCompleted
      If VSTwain1.ErrorCode <> ErrorCode.None Then
          MsgBox(VSTwain1.ErrorString)
      Else
          MsgBox("Scan process is completed.")
      End If
  End Sub

 

 

¿Puedo utilizar el código patch para dividir los trabajos de serie? Y ¿como 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:

  Dim jobsCounter As Integer
  
  Private Sub Form_Load()
    jobsCounter = -1
  End Sub
  
  Private Sub Scan_Click()
    VSTwain1.StartDevice
    VSTwain1.MaxImages = 1
    VSTwain1.ShowUI = false
    VSTwain1.DisableAfterAcquire = true
    VSTwain1.TiffMultiPage = true
    VSTwain1.OpenDataSource
    ' 1 - Detect and include job separator and continue scanning.
    ' 3 - Detect and exclude job separator and continue scanning.
    VSTwain1.JobControl = 1
    jobsCounter = jobsCounter + 1
    VSTwain1.Acquire
  End Sub
  
  Private Sub VSTwain1_ImageAcquired(ByVal sender As Object, _
                       ByVal e As System.EventArgs) _
                       Handles VSTwain1.ImageAcquired
      If VSTwain1.EndOfJob Then
          jobsCounter = jobsCounter + 1
      Else
          VSTwain1.SaveImage 0, "c:\job"+jobsCounter.ToString()+".tif"
      End If
  End Sub
  
  Private Sub VSTwain1_ScanCompleted(ByVal sender As Object, _
                       ByVal e As System.EventArgs) _
                       Handles VSTwain1.ScanCompleted
      If VSTwain1.ErrorCode <> ErrorCode.None Then
          MsgBox(VSTwain1.ErrorString)
      Else
          MsgBox("Scan process is completed.")
      End If
  End Sub
  .....

 

 

Quiero guardar imagenes adquiridas en la coleccion y luego procesarlas. ¿Como puedo hacerlo?

Los metodos de GetImage/GetCurrentImage devuelven un nuevo objeto de Bitmap, entonces Ud. puede usarlo en su coleccion:

  ...
  Dim colDocumentPages As New Collection
  ...
  Dim picNewPage As Image = vnsScanner.GetCurrentImage()
  colDocumentPages.Add(picNewPage)
  ...

 

 

¿Puedo salvar imagenes adquiridas en un documento de PDF?

Si, Ud. puede hacerlo. Las imagenes adquiridas pueden ser salvadas en nuevo documento de PDF o anadidas en documento de PDF que ya existe.
Aqui esta un ejemplo para VB.NET:

  VSTwain1.PdfDocumentInfo.Author = "VintaSoft Ltd."
  VSTwain1.PdfDocumentInfo.Title = "Documents acquired from " + _
                                   VSTwain1.GetSourceProductName(VSTwain1.SourceIndex)
  VSTwain1.PdfDocumentInfo.Creator = "VintaSoftTwain.NET SDK"
  VSTwain1.PdfDocumentInfo.ModificationDate = DateTime.Now
  VSTwain1.PdfMultiPage = true
  VSTwain1.SaveImage(0, "c:\test.pdf")

 

 

¿Como puedo recibir una informacion extendida sobre la imagen del escaner?

Este ejemplo demuestra como recibir la informacion sobre codigos de barras encontrados en la imagen adquirida:

  Public Sub ScanWithoutUI()
      VSTwain1.AppProductName = "MyTwainApplication"
      Try
          VSTwain1.StartDevice()
          VSTwain1.SelectSource()
          VSTwain1.ShowUI = false
          VSTwain1.ExtendedImageInfoCollection.Add(New _
                             ExtendedImageInfo(ExtendedImageInfoId.BarcodeCount))
          VSTwain1.ExtendedImageInfoCollection.Add(New _
                             ExtendedImageInfo(ExtendedImageInfoId.BarcodeType))
          VSTwain1.ExtendedImageInfoCollection.Add(New _
                             ExtendedImageInfo(ExtendedImageInfoId.BarcodeTextLength))
          VSTwain1.ExtendedImageInfoCollection.Add(New _
                             ExtendedImageInfo(ExtendedImageInfoId.BarcodeText))
          While VSTwain1.AcquireModal()
              If Not (PictureBox1.Image Is Nothing) Then
                  PictureBox1.Image.Dispose()
                  PictureBox1.Image = Nothing
              End If
              PictureBox1.Image = VSTwain1.GetCurrentImage
              VSTwain1.SaveImage 0, "c:\test.tiff"
              ' retrieve extended image info
              Dim barcodeCount As ExtendedImageInfo = _
                                       VSTwain1.ExtendedImageInfoCollection(0)
              If barcodeCount.Items IsNot Nothing And barcodeCount.Items.Length > 0 Then
                  If barcodeCount.Items(0) > 0 Then
                      Dim barcodeType As ExtendedImageInfo = _
                                       VSTwain1.ExtendedImageInfoCollection(1)
                      Dim barcodeTextLength As ExtendedImageInfo = _
                                       VSTwain1.ExtendedImageInfoCollection(2)
                      Dim barcodeText As ExtendedImageInfo = _
                                       VSTwain1.ExtendedImageInfoCollection(3)
                      Dim i As Integer, infoString As String
                      For i = 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.Items(i) + "'"
                          Else
                              infoString = "BarcodeText=Undefined "
                          End If
                          MsgBox(infoString)
                      Next i
                  End If
              End If
          End While
      Catch ex As TwainException
          MsgBox ex.Message
      Catch ex As ImagingException
          MsgBox ex.Message
      End Try
  End Sub

 

 

¿Puedo recibir la imagen de 48-bit?

Si. La biblioteca VintaSoftTwain. NET permite recibir las imagenes coloradas de 48-bit o las imagenes grises de 16-bits. Las imagenes pueden ser salvadas sin perdida de la profundidad del color solamente en los ficheros de TIFF.

Aqui esta un ejemplo que demuestra como recibir la imagen colorado de 48-bpp del escaner sin la interface de usuario:

  
  VSTwain1.OpenDataSource()
  VSTwain1.PixelType = PixelType.RGB
  VSTwain1.Capability = DeviceCapability.IBitDepth
  VSTwain1.CapType = CapType.OneValue
  VSTwain1.CapValue = 16   ' 16 bits per color component
  VSTwain1.SetCap()
  VSTwain1.Acquire()

Aqui esta un ejemplo que demuestra como recibir la imagen colorado de 24-bpp del escaner sin la interface de usuario:

  
  VSTwain1.OpenDataSource()
  VSTwain1.PixelType = PixelType.RGB
  VSTwain1.Capability = DeviceCapability.IBitDepth
  VSTwain1.CapType = CapType.OneValue
  VSTwain1.CapValue = 8    ' 8 bits per color component
  VSTwain1.SetCap()
  VSTwain1.Acquire()

Aqui esta un ejemplo que demuestra como recibir la imagen gris de 16-bpp del escaner sin la interface de usuario:

  
  VSTwain1.OpenDataSource()
  VSTwain1.PixelType = PixelType.Gray
  VSTwain1.Capability = DeviceCapability.IBitDepth
  VSTwain1.CapType = CapType.OneValue
  VSTwain1.CapValue = 16   ' 16 bits per color component
  VSTwain1.SetCap()
  VSTwain1.Acquire()

 

 

¿Puedo crear el sistema de sesion predefinido para mi escaner de volumen alto?

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

Aqui esta un ejemplo que demuestra como salvar los ajustes de dispositivo corriente en el fichero:

  
  VSTwain1.OpenDataSource()
  Dim fs As FileStream = New FileStream("scanner-setup.xml", FileMode.Append, FileAccess.Write)
  VSTwain1.SaveDeviceSettings(fs)
  fs.Close()

Aqui esta un ejemplo que demuestra como cargar ajustes de dispositivo antes salvados en el dispositivo:

  
  VSTwain1.OpenDataSource()
  Dim fs As FileStream = New FileStream("scanner-setup.xml", FileMode.Open, FileAccess.Read)
  VSTwain1.LoadDeviceSettings(fs)
  fs.Close()
  VSTwain1.Acquire()

 

 

¿Que pasos debe dar para anadir la biblioteca a mi WEB proyecto?

Debe hacer lo siguiente al lado de server:

  • Insertar el fichero Vintasoft.Twain.dll al server.
  • Utilizar el código siguiente en su página web:
  • < OBJECT ID="VSTwain1" WIDTH=1 HEIGHT=1
    CLASSID="http://your-server/path-on-server/Vintasoft.Twain.dll#Vintasoft.Twain.VSTwain"
    CODEBASE="http://your-server/path-on-server/Vintasoft.Twain.dll#version=5,0,5,3">
    < /OBJECT >

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

  • Todos deben tener derecho al registro en la dirección del server donde están guardadas las imagines cargadas.


Debe hacer lo siguiente al lado del cliente:

  • Debe ser instalada la versión.NET Framework 1.1 o superior.
  • 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 añadido a "Trusted Runtime Security Group" en .NET

    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 server, apretar el botón "seguir"
    • Instalar el acceso complete (Full Trust) para el grupo codico

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

  • 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 web server, 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 VSTwain object 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. ¿Que 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, 5.0.5.3).

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="VSTwain1" WIDTH=1 HEIGHT=1
CLASSID="http://your-server/path-on-server/Vintasoft.Twain.dll#Vintasoft.Twain.VSTwain"
CODEBASE="http://your-server/path-on-server/Vintasoft.Twain.dll#version=5,0,5,3">
< /OBJECT >

Es todo que debe hacer.

 

 

Trato de elegir el dispositivo por medio de la opción sourceIndex en Internet Explorer, pero ocurre el error. ¿Por que?

Cada objeto a la página web en Internet Explorer tiene la opción sourceIndex – esta opción es accesible solamente para la lectura. Debe utilizar el código siguente para trabajar con la opción sourceIndex del objeto VSTwain en JavaScript o VBScript:

  VSTwain1.StartDevice()
  VSTwain1.object.SourceIndex = 1   ' second device
  VSTwain1.Acquire()

 

 

¿Puedo escanear imagenes y cargarlos al servidor en la aplicacion de intranet con la autenticacion integrada de Windows?

Si, la biblioteca permite usar cualquier metodo de autenticacion apoyado por .NET Framework.

El ejemplo siguiente ilustra como usar la informacion de autenticacion del usuario que esta conectado actualmente:

  ...
  httpUpload1.Url = "http://localhost/vstwaindemo/imageupload.aspx"
  httpUpload1.UseDefaultCredentials = true
  ...

El ejemplo siguiente ilustra como usar informacion de autenticacion multiple:

  ...
  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))
  httpUpload1.Credentials = myCache
  ...

 

 

¿Puedo escanear imagenes y cargarlos al servidor en la aplicacion de web con la autenticacion de Formas de Cookieless?

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

 

 

¿Puedo guardar las imagenes adquiridas en la tabla MS SQL del server?

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

 

 

Quiero salvar imagenes adquiridas como documentos de 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.

Aqui esta un ejemplo que muestra como salvar cada imagen adquirida como un documento separado de PDF en una corriente:

  Dim mem As MemoryStream = VSTwain1.GetImageAsStream(0, ImageFileFormat.PDF)

Y aqui esta un ejemplo que muestra como salvar todas las imagenes adquiridas como un solo documento de PDF en una corriente:

  Dim mem As MemoryStream = VSTwain1.GetImageAsStream(0, ImageFileFormat.PDF)
  Dim i As Integer
  For i = 1 To VSTwain1.NumImages - 1
    VSTwain1.SaveImageToStream(i, mem, ImageFileFormat.PDF)
  Next i