Opinions


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

Questions d'ordre général:

 

Redistribution:

 

Ventes:

 

Programmation:

 

Web:

 

Bases de données:

 

 

Pour quels buts je peux utiliser la SDK VintaSoftTwain.NET?

La bibliothèque donnée peut être utilisée pour un guidage du travail des scanners, les cameras numériques et les cameras-webs et n'importe quels autres dispositifs, qui supportent le standard TWAIN.

 


 

La bibliothèque, que-ce qu’elle comprend?

La SDK comprend:

  • Le fichier Vintasoft.Twain.dll - a 100% .NET assembly
  • La documentation dans le format MS Help Workshop (le fichier Help\Vintasoft.Twain.chm)
  • Les exemples pour MS Visual Basic. NET, MS Visual C#, ASP.NET (le catalogue Examples)
  • Demo applications for 32-bit systems (files in Bin\v2.0\x86 and Bin\v4.0\x86 directories)
  • Demo applications for 64-bit systems (files in Bin\v2.0\x64 and Bin\v4.0\x64 directories)

 

 

Dans quels langages de programmation je peux utiliser la bibliothèque?

La licence du développeur et la licence pour la société permettent utiliser composant à:

  • Microsoft Visual Studio .NET : Visual Basic, Visual C#, Visual C++, Visual J#
  • Borland Delphi 8.0, Borland C# Builder, Borland C++ BuilderX
  • N'importe quels langages de programmation et les applications compatibles avec la technologie .NET.

Licence pour serveur permet d’utiliser composant à:

  • Internet Explorer : ASP.NET, JavaScript, VBScript

 

 

Quels restrictions existe dans la version non enregistrée de la bibliothèque?

Les restrictions de la version non enregistrée de la bibliothèque:

  • On montrera la boite "Sur enregistrée de le logiciel" à chaque scanning des images
  • N'importe quelle image peut être sauvegardée sur le disque optique ou être chargé sur le serveur comme le fichier BMP
  • On ne peut sauvegarder sur le disque optique ou chargé sur le serveur comme des fichiers JPEG ou TIFF qu’une image en blanc-et-noire ou une image grise

All these restrictions are removed in registered version.

 

 

Je n'ai pas trouvé la réponse à ma question. Qu’est-ce que je dois faire?

L'information sur la plupart des questions peut être trouvée dans la documentation sur le composant ou dans ce FAQ. Si vous n'avez pas trouvé la réponse à votre question, alors écrivez la lettre au service de la maintenance.

 

 

Quels fichiers je dois incorparer dans le distributif de mon logiciel?

Vous ne devez insérer dans le distributif de votre logiciel qu’un fichier: Vintasoft.Twain.dll. Après l'installation de Votre logiciel sur l'ordinateur ce fichier doit être est placé au catalogue ou il y avait une référence à la compilation du logiciel.

 

 

Je peux diffuser le composant Vintasoft.Twain.dll avec mon application sans quelque paiement supplémentaire?

Oui, vous pouvez diffuser le composant avec votre application. Vous ne payez que pour l’enregistrement initial. La licence pour la société n'ont pas les restrictions de la diffusion. La licence du développeur a certains restrictions de la diffusion. La diffusion de licence du serveur n'est pas libre de droits. Consultez s'il vous plaît l'accord de licence.

 

 

Que dois-je faire si la distribution de mon logiciel créé sur la base d’une licence pour développeur peut franchir la barre de 100 copies l'année en cours?

Si vous possédez une licence pour développeur et la distribution de votre logiciel peut franchir la barre de 100 copies l'année en cours, il est necessaire de vous adresser au Bureau des ventes de «VintaSoft» où on vous offrira la possibilité d`upgrade de votre licence vers une licence d`organisation au rabais de 30% ou proposera d`acheter une licence appositive pour développeur.

 

 

Quelles sont les différences entre la licence pour développeur et la licence pour l'organisation?

  • La licence pour développeur doit être employée pour le développement de logiciels par un développeur dont le nom est indiqué sur les données de la licence.
  • La licence pour organisation doit être employée pour le développement de logiciels par n'importe quel développeur qui travaillerait dans la companie dont le raison sociale est indiqué sur les données de la licence.
  • La licence pour développeur peut être employée pour le développement de logiciels sur n'importe quel PC à n'importe quelle adresse physique.
  • La licence pour organisation doit être employée pour le développement de logiciels sur n'importe quel PC situé à une seule adresse (dans un seul bureau).
  • La licence pour développeur permet de distribuer des logiciels comportant les fichiers SDK destinés à la distribution limitée de 100 copies dans l'année.
  • La licence pour société permet la distribution illimitée de logiciels comportant les fichiers SDK destinés à la distribution.

 

 

Puis-je faire l`upgrade de ma licence de "Standard edition" vers une licence équivalente de "Standard + WPF edition"?

Oui, veuillez faire une demande au Bureau des ventes et on vous offrira la possibilité d`acheter une licence équivalente de "Standard + WPF edition" au rabais de 70%.

 

 

Y-a-t-il une différence si j’utilise mon application sur l'ordinateur personnel et le serveur?

Oui. Veuillez consulter la rubrique "Deploying" dans la documentation de produit pour comprendre la différence.

Termes : Desktop PC - Système d'exploitation Windows XP, Vista, 7 est installé. Server - Système d'exploitation Windows Server 2000, 2003, 2008 est installé.

 

 

Comment ajouter Vintasoft.Twain.DeviceManager composant sur la forme de mon .NET application?

Pour ajouter Vintasoft.Twain.DeviceManager composant sur la forme il est nécessaire d'accomplir les pas suivants:

  • Ouvrir votre projet à Visual Studio .NET
  • Ouvrir la forme nécessaire
  • Ouvrir le tableau "Toolbox"
  • Cliquer le bouton droit de la souris sur "Toolbox"
  • Choisir le point du menu "Customize Toolbox..." du menu apparu
  • Ouvrir le signet .NET Framework Components
  • Cliquer le bouton "Browse..." Et choisir le fichier VSTwain.dll
  • Trouver et sélectionner composant VintaSoftTwain
  • Fermer la fenêtre ayant cliqué le bouton "Ok"
  • Trouver et choisir sur la barre "Toolbox" l'objet Vintasoft.Twain.DeviceManager
  • Placer Vintasoft.Twain.DeviceManager composant sur la forme

 

 

Comment recevoir les images en blanc-et-noires (les documents)?

L'exemple du code pour la réception des images en blanc-et-noires:

  [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

 

 

Est-ce que je peux diriger un chargeur de document automatisé (ADF) sans interface d'utilisateur?

Voici un exemple qui illustre comment vous pouvez recevoir des images de manière asynchrone du bac 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

 

 

Est-ce que je peux diriger un chargeur de document automatisé (ADF) sans interface d'utilisateur et sans utilisation de l'événement PostScan?

Voici un exemple qui illustre comment vous pouvez obtenir simultanément des images de l'appareil:

  [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

 

 

Il me faut scanner seulement la partie de l’image. Comment je dois le faire?

Voici un exemple qui illustre comment vous pouvez obtenir seulement le haut de la page:

  [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

 

 

Est-ce que je peux choisir le dispositif nécessaire sans utiliser le dialogue standard du choix d’un dispositif?

Voici un exemple qui illustre la façon de choisir un appareil par son nom:

  [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

 


 

Comment désactiver la fenêtre de l'indicateur du procès du scanning à la réception des images sans interface d'utilisateur?

Le standard TWAIN permet de désactiver la fenêtre de l'indicateur du procès du scanning, si l'interface d'utilisateur n'est pas utilisée (ShowUI=False). On peut faire cela comme il suit:

  [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

 

 

Je veux créer l'indicateur personnel du procès du scanning. Est-ce que c'est possible?

Oui, c'est possible, mais au condition que l’image soit remise du scanner à l'application à travers la mémoire (Memory transfer). Pour la création de l'indicateur du procès du scanning il est nécessaire d'utiliser l'événement ImageAcquiringProgress. L'exemple:

  [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

 

 

Comment établir la résolution différente pour l'axe X et Y pendant le scanning des images?

L'exemple а qui résolution selon l'axe X est établi égal 200 dpi, mais selon l'axe Y égal 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

 

 

Notre organisation utilise le scanner avec un chargeur de document automatisé (ADF) branché au réseau local et nous traitons la multitude de documents chaque jour. Comment nous pouvons automatiser notre travail? Il est désirable de sauvegarder chaque document comme un fichier particulier.

Vous pouvez utiliser une page vide comme le séparateur des documents et définir les pages vides à l'aide de la méthode AcquiredImage.IsBlank. L'exemple:

  [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

 

 

Est-ce que je peux utiliser les patch-codes pour la séparation? Si oui, comment définir la fin de batched jobs?

Vous pouvez separer les batched jobs, si vous utiliserez la possibilité CAP_JOBCONTROL.
L'exemple pour 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

 

 

Puis-je sauvegarder l’image balayée dans le document PDF?

Oui, c’est possible. L’image balayée peut être sauvegarder comme le nouveau document ou ajouter dans le document PDF existé.
Voilà un exemple pour 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")

 

 

Comment peut-on obtenir l’information élargie sur l’image du scanner?

Cet exemple montre comment on peut obtenir l’information sur les codes de barre trouvés dans l’image balayée:

  [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

 

 

Comment puis-je recevoir l’image de 48-bit?

Oui. Librairie VintaSoftTwain.NET permets de recevoir l’image colorée de 48-bit ou l’image grise de 16 bit.

Ici il y a un exemple qui montre comment recevoir l’image colorée de 48-bit du scanner sans interface d’usager:

  [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()


Ici il y a un exemple qui montre comment recevoir l’image colorée de 24-bit du scanner sans interface d’usager:

  [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()


Ici il y a un exemple qui montre comment recevoir l’image grise de 16-bit du scanner sans interface d’usager:

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

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

 

 

Comment puis-je créer le profil pour mon scanner ultra-rapide?

Oui, librairie permets de télecharger/sauvegarder les profils prédéfinis pour les scanners de la vitesse moyenne et ultra-rapides.

Ici il y a un exemple qui montre comment on peut sauvegarder les réglages de dispositif courant dans le fichier:

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


Ici il y a un exemple qui montre comment on peut télécharger les réglages sauvegardés de dispositif dans le dispositif:

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

 

 

Je reçois le message "Cannot initialize the device manager" après avoir essayé d’ouvrir le gestionnaire des dispositifs. Que faire?

Il vous faut:

  • vérifier si le TWAIN DSM est installé dans le système en utilisant la propriété DeviceManager.IsTwainAvailable
  • indiquer l’itinéraire vers TWAIN DSM en utilisant la propriété DeviceManager.TwainDllPath
  • modifier la version de TWAIN DSM en utilisant la propriété DeviceManager.IsTwain2Compatible.

TWAIN Data Source Manager (DSM) version 1.X c’est TWAIN_32.DLL, en règle générale, ce fichier se trouve dans le classeur "C:\Windows\" et est inclu comme standart dans toutes les versions 32-bits de Windows.

TWAIN DSM version 2.X pour les systèmes 32-bits consiste en 2 fichiers: TWAINDSM.DLL et TWAINDSM32.MSM. Il N’EST pas inclu comme standart dans le logiciel Windows. Pour les systèmes 32-bits, les fichiers DSM doivent être transférés dans le classeur "C:\Windows\System32\". Pour les systèmes 64-bits, les fichiers DSM doivent être transférés dans le classeur "C:\Windows\SysWow64\".

TWAIN DSM version 2.X pour les systèmes 64-bits consiste en 2 fichiers: TWAINDSM.DLL et TWAINDSM64.MSM. Il N’EST pas inclu comme standart dans le logiciel Windows. Pour les systèmes 64-bits, les fichiers DSM doivent être transférés dans le classeur "C:\Windows\System32\".

La dernière version de TWAIN DSM 2.X est disponible ici:: http://www.twain.org ou http://sourceforge.net/projects/twain-dsm/files/.

 

 

Je ne vois pas de scanner dans le guichet de choix des dispositifs TWAIN de mon logiciel, mais je le vois dans d’autres logiciels. Pourquoi?

Vous pouvez compiler votre logiciel avec VintaSoftTwain.NET SDK version 7.0 et plus récent dans le mode "Any CPU" et Votre logiciel:

  • fonctionnera dans les systèmes x32 avec TWAIN_32.DLL et TWAINDSM.DLL (x32)
  • fonctionnera dans les systèmes x64 avec TWAINDSM.DLL (x64)

Vous pouvez compiler votre logiciel avec VintaSoftTwain.NET SDK version 7.0 et plus récent dans le mode "x86" (WOW) et Votre logiciel:

  • fonctionnera dans les systèmes x32 avec TWAIN_32.DLL et TWAINDSM.DLL (x32)
  • fonctionnera dans les systèmes x64 avec TWAIN_32.DLL et TWAINDSM.DLL (x32)

Vous pouvez compiler votre logiciel avec VintaSoftTwain.NET SDK version 7.0 et plus récent dans le mode "x64" et Votre logiciel:

  • NE fonctionnera pas dans les systèmes x32
  • fonctionnera dans les systèmes x64 avec TWAINDSM.DLL (x64)

Nous recommendons d’utiliser le mode "x86", comme tous les scanners ont les drivers TWAIN 32-bits, mais seulement les scanners récents et professionnels ont les drivers TWAIN 64-bits.

 

 

Quels pas faut-il accomplir pour ajouter la bibliothèque chez mon projet WEB?

Il est nécessaire d'accomplir les pas suivants de côté du serveur:

  • Placer le fichier Vintasoft.Twain.dll sur le serveur.
  • Utiliser le code suivant sur votre page 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 >

    Le numéro correct de la version est très important!

  • Enregistrez votre application web sur le serveur ASP.NET (pour plus d'informations s'il vous plaît lire ce Microsoft TechNet article).
  • Touts devront avoir droit de l'enregistrement à la directoire au serveur où les images chargées se trouveront.


Vous devez accomplir les actions suivantes de côté du du client:

  • .NET Framework 2.0 doit être installé.
  • Il faut utiliser l'Internet Explorer 6.0 et plus ou de Mozilla Firefox 3.0 et plus avec IE Tab Plug-in.
  • Votre site doit être marqué comme sûr a la politique de sécurité de .NET Framework 2.0.

    On peut faire cela comme il suit:

    • Ouvrir le configurateur du Microsoft .NET Framework de "Control Panel | Administrative Tools"
    • Choisir "Runtime Security Policy | Machine | Code Groups | All_Code"
    • Cliquer le bouton droit sur le point "All_Code" et choisir "Nouveau", pour créer un nouveau groupe de code
    • Introduire le nom du groupe de code, par exemple My_Web_Site, cliquer bouton "ensuite"
    • Choisir la condition "Site" pour le groupe de code
    • Indiquer "my_web_site.ru" comme le nom du serveur, cliquer bouton "ensuite"
    • Établir l'accès complet (Full Trust) pour le groupe de code

    Pour l'information plus détaillée sur la sécurité .NET Framework, lisez s'il vous plaît cet article de MSDN.

    Important: un assemblage compilé dans le .NET 4.0 ne peut pas être utilisé dans les projet web car .NET Framework 4.0 ne permet pas d'utiliser les composantes WinForms dans l’Internet Explorer. Seulement un assemblage compilé dans le .NET 2.0 peut être utilisé dans les projets web.

  • Votre site web doit être ajoutée à la Zone de confiance dans Internet Explorer 8.0 et supérieur.

    On peut faire cela comme il suit:

    • Ouvrir le Internet Explorer et cliquez sur "Outils => Options Internet" dans le menu, une fenêtre s'ouvrira.
    • Cliquer sur l'onglet "Sécurité" et choisissez "Sites de confiance" icône. Cliquer bouton "Sites", une fenêtre s'ouvrira.
    • Entrez votre site Web dans la ligne fournie. Supprimer de l'vérification par l'entrée "Exiger un serveur sécurisé (https :)...." si cela est nécessaire. Cliquer bouton "Ajouter".
    • Cliquer bouton "Fermer". Votre site est maintenant ajouté à la liste des sites de confiance.
    Pour l'information plus, lisez s'il vous plaît cet article: How Internet Explorer determines permissions for .NET Framework assemblies.

 

 

Je veux créer un script au serveur web, qui sera utilisé par les utilisateurs pour l'installation automatique des paramètres nécessaires de la sécurité .NET Framework sur l'ordinateur de l'utilisateur. Comment je peux faire cela?

Vous devez créer un script, qui lancera la commande suivante:


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

 

 

J'ai reçu le message "Your .NET Framework Security settings must be configured to run the components in your browser" pendant le lancement de l'application web. Qu’est-ce que je fais d’ incorrect?

Avant tout vous devez régler la sécurité .NET Framework comme est décrit.

Ensuite il est nécessaire de vérifier la version 2 que vous utilisez (par exemple, 7.0.0.1).

Après cela vous devez décrire correctement l'objet OBJECT sur votre la page web. L'utilisation du numéro correct de la version est très importante!

L'exemple:

< 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 >

Voilà touts ce que vous devez faire.

 

 

Puis-je télécharger les images reçues du scanner au serveur en web application avec l’authentification intégrée de Windows?

Oui, librairie permets d’utiliser des méthodes d’authentification supportées .NET Framework.

L’exemple suivant montre comment utiliser l’authentification multiple d’information de l’usager courant:

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

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


L’exemple suivant montre comment utiliser l’authentification multiple d’information:

  [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
  ...

 

 

Puis-je télécharger les images reçues du scanner au serveur en web application avec l’authentification de Cookieless Forms?

Oui, vous pouvez le faire, regardez s’il vous plaît les exemples 8 et 9 ici.

 

 

Comment recevoir les images du scanneur, les mémoriser comme le flux de PDF et télécharger le flux de PDF sur un serveur en JavaScript?

Si vous voulez exploiter VintaSoftTwain.NET SDK en JavaScript, Vous devez savoir la chose suivante:

  • JavaScript ne permet pas s`adresser à l`indexeur de classe, c`est-à-dire la ligne de code "device.AcquiredImages[0]" est invalide en JavaScript
  • JavaScript ne sait rien de type énuméré ImageFileFormat.: Voilà la liste de constants du type énuméré ImageFileFormat: BMP - 0, JPEG - 1, TIFF - 2, PNG - 3, GIF - 4, PDF - 5.
Voilà l`example qui montre comment conserver les image du scanneur dans le flux de données PDF et le télécharger sur un serveur après avoir reçu toutes les images:

  [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)

  ...

 

 

Puis-je sauvegarder les images reçues dans la table du serveur MS SQL?

Oui, vous pouvez le faire, regardez s’il vous plaît l’exemple 3 ici.

 

 

Je veux sauvegarder les images reçues comme les documents PDF dans la base de données. Puis-je le faire?

Oui, vous pouvez sauvegarder toutes les images reçues d’abord dans le flux et puis sauvegarder le flux d’information dans la base de données.

Voilà l’exemple qui montre comment on peut sauvegarder chaque image reçue dans la base de données comme le document PDF séparé:

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


Et voilà l’exemple qui montre comment savegarder toutes les images reçues dans la base de données comme un document PDF unifié:

  [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