Info Produit


Revue

Licence

FAQ

Forums

Exemples

History


Téléchargements

Version d'évaluation

On-line manual

Opinions


I was evaluating a bunch of twain components for .NET but NONE of the Components were so simple and comfortable to handle as the Vintasoft Twain Control is!

Marcus Lauermann
Naome Ltd.





VintaSoftTwain.NET Library - FAQ

Questions d'ordre général:

 

Redistribution:

 

Programmation:

 

Web déploiement:

 

Bases de données:



 

Pour quels buts je peux utiliser la bibliothèque 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 bibliothèque comprend:

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

 

 

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é et pour le serveur n'ont pas les restrictions de la diffusion.
La licence du développeur a certains restrictions de la diffusion. Consultez s'il vous plaît l'accord de licence.

 

 

Comment ajouter VintaSoftTwain.NET composants sur la forme de mon .NET application?

Pour ajouter VintaSoftTwain.NET composants 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 VintaSoftTwain
  • Placer VintaSoftTwain 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:

  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

 

 

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

L'exemple qui montre comment peut-on diriger le travail du scanner avec un chargeur de document automatisé sans interface d'utilisateur:

  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

 

 

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

L'exemple montre comment peut- on diriger le travail du scanner avec un chargeur de document automatisé sans interface d'utilisateur et sans utilisation de l'événement 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

 

 

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

Utilisez le code suivant pour recevoir la partie de l’image limitée par le rectangle (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()

 

 

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

Oui. Il est possible d’utiliser le code suivant pour le numérotage des dispositifs:

  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
Ce code sert au choix du premier dispositif:
  VSTwain1.StartDevice()
  VSTwain1.SourceIndex = 0
  .....
  VSTwain1.Acquire
Bien que la meilleur variante soit le suivant:
  VSTwain1.StartDevice()
  For i = 0 To VSTwain1.SourcesCount - 1
     If VSTwain1.GetSourceProductName(i) = "Your device name" Then
       VSTwain1.SourceIndex = i
       break
    End If
  Next
  .....
Dans ce cas il est nécessaire de savoir le nom exacte du dispositif.

 


 

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:

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

 

 

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 Progress. L'exemple:

  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

 

 

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 4800 dpi, mais selon l'axe Y égal 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()

 

 

Je veux lancer le procès du scanning dans le flot particulier. Est-ce que c’est possible?

Oui, c'est possible, mais à condition d’utiliser la méthode AcquireModal. L’exemple pour 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);
      }
    }
    .....
  }
  .....

 

 

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 IsBlankPage. L'exemple:

  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

 

 

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:

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

 

 

Je veux sauvgarder les images acquises au buffer pour le traitement suivant. Comment je dois le faire?

Les méthodes GetImage/GetCurrentImage retournent un nouvel objet Bitmap et vous pouvez l’utiliser dans votre collection:

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

 

 

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:

  VSTwain1.PdfDocumentInfo.Author = "VintaSoft Ltd."
  VSTwain1.PdfDocumentInfo.Title = "Documents acquired from " + _
                                   VSTwain1.GetSourceProductName(VSTwain1.SourceIndex)
  VSTwain1.PdfDocumentInfo.Creator = "VintaSoftTwain.NET Library"
  VSTwain1.PdfDocumentInfo.ModificationDate = DateTime.Now
  VSTwain1.PdfMultiPage = true
  VSTwain1.SaveImage(0, "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:

  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

 

 

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. Les images peuvent être sauvegarder sans la perte de la profondeur de bit seulement dans les fichiers TIFF.

Ici il y a un exemple qui montre comment recevoir l’image colorée de 48-bit du scanner sans interface d’usager:
  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()
Ici il y a un exemple qui montre comment recevoir l’image colorée de 24-bit du scanner sans interface d’usager:
  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()
Ici il y a un exemple qui montre comment recevoir l’image grise de 16-bit du scanner sans interface d’usager:
  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()

 

 

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:
  VSTwain1.OpenDataSource()
  Dim fs As FileStream = New FileStream("scanner-setup.xml", FileMode.Append, FileAccess.Write)
  VSTwain1.SaveDeviceSettings(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:
  VSTwain1.OpenDataSource()
  Dim fs As FileStream = New FileStream("scanner-setup.xml", FileMode.Open, FileAccess.Read)
  VSTwain1.LoadDeviceSettings(fs)
  fs.Close()
  VSTwain1.Acquire()

 

 

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="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,0,1">
    < /OBJECT >

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

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

  • Il faut établir la version .NET Framework 1.1 ou plus haute.
  • 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 а .NET Framework (ajouter à "Trusted Runtime Security Group").

    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.

  • 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 VSTwain object 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, 5.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="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,0,1">
< /OBJECT >

Voilà touts ce que vous devez faire.

 

 

Je tente de choisir le dispositif à l'aide de la propriété SourceIndex à l'Internet Explorer, mais je reçois l’erreur. Pourquoi?

Chaque objet sur la page web à l'Internet Explorer a la propriété prédéterminée SourceIndex cette propriété n’est accessible que pour la lecture. Vous devez utiliser le code suivant pour travailler avec la propriété SourceIndex de l'objet VSTwain à JavaScript ou VBScript:

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

 

 

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:

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

L’exemple suivant montre comment utiliser l’authentification multiple d’information:
  ...
  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
  ...

 

 

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.

 

 

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

  Dim mem As MemoryStream = VSTwain1.GetImageAsStream(0, 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é:
  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