Accueil | Télécharger | Inscription | Opinions | Maintenance English version   Deutsche Version   Русская версия   Português versião   Española versión   Version française


VintaSoftTwain ActiveX Composant  Information Info  Lizenzabkommen Licence  Fragen und Antworten FAQ  Beispiele Exemples  Download Télécharger  Bestellen Acheter



Questions d'ordre général:
  • Pour quels buts je peux utiliser VintaSoftTwain ActiveX composant?
  • Dans quels langages de programmation je peux utiliser le composant ActiveX?
  • Quelles restrictions existent dans la version non enregistrée du composant?
  • Je n'ai pas trouvé la réponse à ma question. Qu’est-ce que je dois faire?

  • Redistribution:
  • Est-ce que je peux diffuser le composant ActiveX avec mon application?
  • Quels fichiers je dois incorparer dans le distributif de mon logiciel?
  • J'ai créé le logiciel à Visual Studio .NET. Quelles pas je doit accomplir pour l'installation correcte de mon logiciel sur l'ordinateur du client?
  • Pandant la registration de ActiveX dans le Windows 98 je reçois le message «erreur» . Qu’est-ce que je dois faire?
  • J'ai créé le logiciel à Delphi. Le logiciel travaille correctement s’il est demarré avec les droits d’administrateur, mais si le logiciel est demarré avec les droits du Visiteur le message suivant "Exception EOleSysError in module..." apparaît. Comment je peux régler le problème?

  • Déploiement:
  • Comment je peux ajouter l'objet VintaSoftTwain sur la forme dans du projet VB.NET?
  • Je veux utiliser ActiveX à Delphi 2005, mais le designer des formes ne permet pas d'ajouter les composants ActiveX à la forme de l'application. Une erreur suivante "Failed to add a reference to the ActiveX type library apparaît. Ensure that it is properly registered....". Comment je peux régler le problème?
  • Comment ajouter dynamiquement VintaSoftTwain objet dans mon projet sur VB?
  • Je tente d'utiliser ActiveX dans l'environnement WINDOWS 2003 Server, mais une erreur "Error at loading the TWAIN_32. DLL" apparaît. Comment je peux régler le problème?
  • Je ne réussis pas à ajouter l'objet 1 sur la forme de l'application dans le milieu de VS.NET 2005. Comment régler ce problème?

  • Web Déploiement:
  • Comment signer ma copie du composant, pour l’utiliser sur ma page-web?
  • Quels pas je dois accomplir pour ajouter ActiveX dans mon projet Internet?
  • Comment je peux télécharger au serveur web l’image reçue du scanner?
  • Je tente de choisir le dispositif à l’aide de la propriété source Index à l'Internet Explorer, mais je reçois l’erreur. Pourquoi?

  • Programmation:
  • Comment le peux acquérir les images blanc-et-noires (documents)?
  • Le langage de programmation que j'utilise ne supporte pas le travail avec des massifs. Comment régler le problème?
  • Est-ce que je peux diriger un chargeur de document automatisé des documents sans interface d'utilisateur?
  • Peut-on créer l'application console en utilisant le composant ActiveX?
  • Est-ce que je peux choisir le dispositif nécessaire sans dialogue du choix standard du dispositif?
  • Comment je peux désactiver la fenêtre de l'indicateur du procès du scanning à la réception des images sans interface d'utilisateur?
  • Je dois scanner seulement une partie de l’image. Comment faut-il faire cela?
  • Comment établir la résolution différente pour l'axe X et Y pendant le scanning des images?
  • Comment choisir l'orientation de l’image pendent le scanning?
  • Notre organisation utilise le scanner avec un chargeur automatique des feuilles (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.
  • Est-ce que je peux utiliser les patch-codes pour la séparation des rgoupes de batched job? Si oui, comment définir la fin de batched job?
  • Je dois savoir quand l’image sera reçue dans un logiciel, mais je ne peux pas utiliser l'événement PostScan. Comment régler ce problème?
  • Est-ce que je peux recevoir les images avec la profondeur de la couleur à 48 bits pour le pixel?
  • Quand j'utilise le scanner HP ScanJet j’observe une perte d’un pouce de l’image dans la partie supérieure de l’image et le rectangle noir avec un pouce de hauteur apparait dans la partie inférieure de l’image. Pourquoi?

  • Bases de données:
  • Est-ce que je peux sauvegarder les images acquérir au champ OLE du tableau MS Access?
  • Est-ce que je peux sauvegarder les images reçues dans le tableau MS SQL du serveur?
  • J'utilise Visual FoxPro et je n'ai pas d'événement PostScan. Pourquoi?

  •  

    Pour quels buts je peux utiliser VintaSoftTwain ActiveX composant?
    Le composant ActiveX peut être utilisé pour Un guidage du travail des scanners, des cameras numériques et les web-cameras et tous les autres dispositifs, qui supportent le standard TWAIN.
     
    Dans quels langages de programmation je peux utiliser le composant ActiveX?
    Licence du développeur et licence pour la société permettent utiliser composant à:
  • MS .NET Studio (VB.NET, C#.NET, C++.NET)
  • MS Visual Studio 6.0 (VB, VC++, VFoxpro)
  • Borland Delphi, Borland C++ Builder
  • MS Office (Excel, Word, Access)
  • N'importe quels langages de programmation et les applications qui supportent les composants ActiveX.

    Licence pour serveur permet utiliser composant à:
  • VBScript
  • JavaScript
  • Tous les autres langues basé sur HTML.


     

    Quelles restrictions existent dans la version non enregistrée du composant?
    Les restrictions de la version non enregistrée:
  • 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

  • Tous ces restrictions sont annulées dans la version enregistrée du composant.


     

    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 à propos du 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.


     

    Est-ce que je peux diffuser le composant ActiveX avec mon application?
    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. Regardez, s'il vous plaît, l'accord de licence.


     

    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: vstwain.dll.
    Après l'installation de Votre logiciel sur l'ordinateur, s'il vous plaît enregistrez le composant ActiveX à l'aide du logiciel regsvr32.exe (regsvr32 vstwain.dll).


     

    J'ai créé le logiciel à Visual Studio .NET. Quelles pas je doit accomplir pour l'installation correcte de mon logiciel sur l'ordinateur du client?
    Avant la diffusion de votre logiciel:
  • Effacez de votre projet les références pour les fichiers AxVSTWAINLib et VSTWAINLib, et les ajoutez de nouveau - les fichiers AxVSTWAINLib et VSTWAINLib doivent être disposés dans la directoire de votre logiciel.
  • Assurez-vous que la propriété "Copy Local" pour les références aux fichiers AxVSTWAINLib.dll et VSTWAINLib.dll a la valeur "False".
  • Après compilation de votre logiciel ajoutez trois fichiers au distributif de votre logiciel: vstwain.dll, AxInterop.VSTWAINLib.dll, Interop.VSTWAINLib.dll (les deux derniers seront générés par Visual Studio).

    Pendant la diffusion de votre logiciel:
  • Assurez-vous que .NET Framework est instalé sur l'ordinateur.
  • Enregistrez ActiveX sur l'ordinateur à l'aide de la commande: regsvr32.exe vstwain.dll.


     

    Pandant la registration de ActiveX dans le Windows 98 je reçois le message «erreur» . Qu’est-ce que je dois faire?
    Ce problème est lié à l'absence des bibliothèques nécessaires dans le système. Les bibliothèques suivantes sont nécessaires pour le fonctionnemrnt d’ActiveX:
  • KERNEL32.DLL
  • ATL.DLL
  • GDI32.DLL
  • OLE32.DLL
  • OLEAUT32.DLL
  • SHELL32.DLL
  • USER32.DLL
  • WS2_32.DLL

    Installez s'il vous plaît le paquet "Visual C ++ run time files" sur l'ordinateur. Cette operation doit régler le problème. Ce package d'installation peut être téléchargé à partir de ce lien: http://download.microsoft.com/download/vc60pro/update/1/w9xnt4/en-us/vc6redistsetup_enu.exe

     

    J'ai créé le logiciel à Delphi. Le logiciel travaille correctement s’il est demarré avec les droits d’administrateur, mais si le logiciel est demarré avec les droits du Visiteur le message suivant "Exception EOleSysError in module..." apparaît. Comment je peux régler le problème?
    Avant tout il faut enregistrer ActiveX dans le système à l'aide du logiciel register32.exe de - doit être accomplie avec les attributions d'administrateur.

    Ensuite il est nécessaire d'utiliser le code suivant dans votre logiciel:
    program Simple;
    
    uses
      Forms,
      Windows, Registry, Dialogs,  ActiveX,
      Unit1 in 'Unit1.pas' {Form1};
    
    {$R *.res}
    
    function IsVSTwainRegistered : Boolean;
    var Reg:TRegistry;
    begin
     Reg:=TRegistry.Create;
     try
      Reg.RootKey:=HKEY_CLASSES_ROOT;
      Result:=Reg.OpenKey('CLSID\{1169E0CD-9E76-11D7-B1D8-FB63945DE96D}',False);
      if Result then Reg.CloseKey;
     finally
      Reg.Free;
     end;
    end;
    
    begin
      if not IsVSTwainRegistered() then
        begin
          ShowMessage('VintaSoftTwain ActiveX is not registered!');
          Exit;
        end;
        
      OleInitialize(nil);
      Application.Initialize;
      Application.CreateForm(TForm1, Form1);
      Application.Run;
      OleUninitialize;
    end.
    


     

    Comment je peux ajouter l'objet VintaSoftTwain sur la forme dans du projet VB.NET?
    Il est nécessaire d'accomplir les pas suivants pour l’addition de l'objet VintaSoftTwain sur la forme de l'application:
    • Demarrer Visual Studio. NET et ouvrir l'application
    • Ouvrir dans le designer des formes la forme de l'application sur laquelle il est nécessaire d'installer l'objet
    • Ouvrir la barre des composants (Toolbox pane)
    • Cliquer le bouton droit de la souris sur la barre des composants
    • Choisir le point "Add/Remove Items..." Du menu apparu
    • Ouvrir le signet "COM Components"
    • Cliquer le bouton "Browse..." Et choisir le fichier VSTwain.dll
    • Trouver et choisir la classe VintaSoftTwain sur la liste
    • Fermer la fenêtre ayant cliqué bouton "OK"
    • Trouver et choisir l'objet VintaSoftTwain à la barre des composants
    • Déplacer à l'aide de la souris l'objet VintaSoftTwain pour la forme d’application
     

    Je veux utiliser ActiveX à Delphi 2005, mais le designer des formes ne permet pas d'ajouter les composants ActiveX à la forme de l'application. Une erreur suivante "Failed to add a reference to the ActiveX type library apparaît. Ensure that it is properly registered....". Comment je peux régler le problème?

    Algorithme des pas qui permettent de régler le problème en question:
  • Eliminer ActiveX du tableaux des composants (Tools Palette)
  • Changer la variante de la langue à l'ordinateur sur "US Locale"
  • Relancer l'ordinateur
  • Ajouter de nouveau ActiveX au tableau des composants - tout doit marcher.

     

    Comment ajouter dynamiquement VintaSoftTwain objet dans mon projet sur VB?

    Il est nécessaire de accomplir les pas suivants:
    1. Ouvrir le point du menu "Project - > References".
    2. Ajouter la référence à l'objet "VintaSoftTwain ActiveX Control" dans la fenêtre apparue.
    3. Ensuite il faut ajouter le code suivant au projet:
      Option Explicit
      Dim WithEvents VSTwain1 As VSTWAINLib.VintaSoftTwain
    
      Private Sub StartScan_Click()
         Set VSTwain1 = New VSTWAINLib.VintaSoftTwain
         With VSTwain1
            .StartDevice
            If .SelectSource = 1 Then
                .showUI = True
                .Acquire
            End If
         End With
      End Sub
    
      Private Sub VSTwain1_PostScan(ByVal flag As Long)
         If flag <> 0 Then
            If VSTwain1.errorCode <> 0 Then
                MsgBox VSTwain1.errorString
            End If
         Else
            Set Image1.Picture = VSTwain1.GetCurrentImage
            VSTwain1.tiffCompression = 10
            VSTwain1.SaveImage 0, "c:\test.tif"
         End If
      End Sub
    
     

    Je tente d'utiliser ActiveX dans l'environnement WINDOWS 2003 Server, mais une erreur "Error at loading the TWAIN_32. DLL" apparaît. Comment je peux régler le problème?

    Dans la version du Windows 2003 Server que vous utilisez il y a une erreur dans la configuration : la fonction GetWindowsDirectory rend la voie incorrecte vers la directoire du Windows, p.e. "C:\Documents and Settings\User\Windows \" au lieu de "C:\Windows \".
    L'article suivent vous aidera à régler ce problème: http://support.microsoft.com/kb/832048.

  •  

    Je ne réussis pas à ajouter l'objet VintaSoftTwain ActiveX sur la forme de l'application dans le milieu de VS .NET 2005. Comment régler ce problème?

    Vous devez ajouter au projet la référence à la bibliothèque "stdole" avant l’addition de l'objet VintaSoftTwain ActiveX sur la forme de l'application. Les pas nécessaires:
    • Deplacez le curseur de la souris vers le point "References" et cliquez le bouton droit
    • Choisissez le point "Add reference" du menu apparu
    • Ouvrez le signet "COM"
    • Trouvez et choisissez la classe "OLE Automation" de la liste
    • Fermez la fenêtre ayant cliqué bouton "OK"
    Après ces pas il est possible d’ajouter l'objet 1 sur la forme de votre application sans problèmes.

     

    Comment signer ma copie du composant, pour l’utiliser sur ma page-web?

    est signé par le certificat numérique de Thawte.
    Annoncer-nous s’il vous plaît , si vous voulez signer VintaSoftTwain ActiveX par votre certificat personnel.

     

    Quels pas je dois accomplir pour ajouter ActiveX dans mon projet Internet?

    Il est nécessaire d'accomplir les pas suivants:
    1. Ajouter le fichier vstwain.dll pour le serveur.
    2. Corriger les lignes suivantes dans le code HTML.
      // Dans le code de l'exemple:
      &ltOBJECT ID="VSTwain1" WIDTH=1 HEIGHT=1
              CLASSID="CLSID:1169E0CD-9E76-11D7-B1D8-FB63945DE96D"
              CODEBASE="">
      </OBJECT>
    
      // Dans votre code:
      &ltOBJECT ID="VSTwain1" WIDTH=1 HEIGHT=1
              CLASSID="CLSID:1169E0CD-9E76-11D7-B1D8-FB63945DE96D"
              CODEBASE="http://www.your-server.de/activex/vstwain.dll#version=4,0,0,3">
      </OBJECT>
    
    Vous ne devez pas installer le composant ActiveX sur tous les ordinateurs de votre organisation apres touts ces pas. Quand l'utilisateur ouvrira la page avec son composant la question sur l'installation du composant à son ordinateur sera posé. S’ il accepte l'installation, le composant sera instalé automatiquement à son ordinateur et il pourra travailler avec votre page web.

    Si cela est nécessaire, ActiveX peut etre placer au fichier CAB: (CODEBASE="http://www.your-server.de/activex/vstwain.cab").
     

    Comment je peux télécharger au serveur web l’image reçue du scanner?

    Le protocole HTTP ne permet pas télécharger directement les images au serveur Web (HTTP). Pour la résolution du problème on peut utiliser le web-script spécial, qui doit être installé au serveur. Vous pouvez trouver la multitude de scripts sur Internet ou utiliser un des suivants: ASP script, Perl script.

    Pour le téléchargment des images au serveur à l’aide des scripts il faut savoir quels champs le script contient-it.

    Le script ASP contient les champs suivants:
  • Champ textuel "Demo"
  • Champ pour le fichier "txtFile"
  • Bouton "cmdSubmit"

  • et pour le téléchargement des images à l’aide des scripts il faut utiliser le code suivant:
      If VSTwain1.SetHttpServerParams("http://www.your-server.de/clsUploadTest.asp",
                     "http://www.your-server.de/clsUploadTest.asp", 4) = 0 Then
        MsgBox VSTwain1.errorString
      Else
        VSTwain1.SetHttpFormField "Demo", "Demo string"
        VSTwain1.SetHttpFormField "cmdSubmit", "SUBMIT"
        If VSTwain1.SaveImageToHttp(0, "txtFile", "demo.jpg") = 0 Then
            MsgBox VSTwain1.errorString
        Else
            Timer.Interval = 10
        End If
      End If
    
    Le script Perl contient les champs suivants:
  • Champ textuel "login"
  • Champ textuel "pass"
  • Champs textuel "file"

  • et pour le téléchargement des images à l’aide des scripts il faut utiliser le code suivant:
      If VSTwain1.SetHttpServerParams("http://www.your-server.de/cgi/upload.cgi",
                     "http://www.your-server.de/upload.html", 4) = 0 Then
        MsgBox VSTwain1.errorString
      Else
        VSTwain1.SetHttpFormField "login", "guest"
        VSTwain1.SetHttpFormField "pass", "guest"
        If VSTwain1.SaveImageToHttp(0, "file", "demo.jpg") = 0 Then
            MsgBox VSTwain1.errorString
        Else
            Timer.Interval = 10
        End If
      End If
    
    S’il vous plaît voir nos exemples exemples.


     
    Je tente de choisir le dispositif à l’aide de la propriété source Index à l'Internet Explorer, mais je reçois l’erreur. Pourquoi?
    Chaque objet de la page web de l'Internet Explorer a la propriété prédéterminée sourceIndex - cette propriété ne suppose que la lecture. Vous devez utiliser le code suivant pour travailler avec la propriété source Index de l'objet 1 à JavaScript ou VBScript:
      VSTwain1.StartDevice()
      VSTwain1.object.sourceIndex = 1   ' Le deuxième dispositif
      VSTwain1.Acquire()
     
    Comment le peux acquérir les images blanc-et-noires (documents)?
    Voilà l'exemple du code pour la acquérir des images en blanc-et-noires:

      Private Sub StartScan()
          VSTwain1.StartDevice()
          If VSTwain1.SelectSource() = 1 Then
              VSTwain1.OpenDataSource()
              VSTwain1.pixelType = 0
              VSTwain1.Acquire()
          End If
      End Sub       
     

    Le langage de programmation que j'utilise ne supporte pas le travail avec des massifs. Comment régler le problème?

    S’il vous est nécessaire de recevoir le massif des valeurs à l'aide des méthodes GetPageSizes, GetPixelTypes, GetResolutions, GetUnitsOfMeasure, mais le langage de programmation, dont vous utilisez ne supporte pas le travail avec les massifs, alors vous pouvez utiliser la méthode suivante:
      ' Cet exemple montre comment recevoir des types des images supportées par le dispositif,
      VSTwain1.StartDevice()
      VSTwain1.OpenDataSource()
      bSupportBW = 0
      VSTwain1.pixelType = 0           ' Les images en blanc-et-noires (1 bit pour le pixel)
      If VSTwain1.errorCode = 0 Then   ' Les images en blanc-et-noires sont supportées 
                                         par le dispositif
        bSupportBW = 1
      End If
      bSupportGray = 0
      VSTwain1.pixelType = 1           ' Les images grises (8 bits pour le pixel)
      if VSTwain1.errorCode = 0 Then   ' Les images grises sont supportées par le dispositif
        bSupportGray = 1
      End If
      bSupportRGB = 0
      VSTwain1.pixelType = 2           ' RGB (24 bits pour le pixel)
      If VSTwain1.errorCode = 0 Then   ' Les images en couleurs (RGB) sont supportées 
                                         par le dispositif
        bSupportRGB = 1
      End If
      ...................
    

     
    Est-ce que je peux diriger un chargeur de document automatisé des documents sans interface d'utilisateur?
    L'exemple suivent montre comment peut- on diriger le travail du scanner avec un chargeur de document automatisé (ADF) sans interface d'utilisateur:
      Private Sub StartScan()
          VSTwain1.StartDevice()
          If VSTwain1.SelectSource() = 1 Then
              VSTwain1.showUI = False
              VSTwain1.disableAfterAcquire = True
              VSTwain1.maxImages = 1
              VSTwain1.autoCleanBuffer = True
              VSTwain1.tiffMultiPage = True
              VSTwain1.tiffCompression = 10
              If VSTwain1.OpenDataSource() = 1 Then
                  VSTwain1.unitOfMeasure = 0
                  VSTwain1.pixelType = 0
                  VSTwain1.resolution = 200
                  If VSTwain1.feederPresent = 1 Then
                      VSTwain1.feederEnabled = True
                      If VSTwain1.duplex <> 0 Then
                          VSTwain1.duplexEnabled = True   ' permettre duplex
                      End If
                      If VSTwain1.feederLoaded = 1 Then
                          VSTwain1.xferCount = -1
                          VSTwain1.autoFeed = True
                          VSTwain1.Acquire()
                      End If
                  End If
              End If
          End If
      End Sub
    
      Private Sub VSTwain1_PostScan(ByVal flag As Long)
          If flag <> 0 Then
              If VSTwain1.errorCode <> 0 Then
                  MsgBox VSTwain1.errorString
              End If
          Else
              VStwain1.SaveImage VSTwain1.NumImages-1, "c:\test.tiff"
              If VSTwain1.dataSourceState = 0 Then
                  VSTwain1.StopDevice()
                  MsgBox "Scan completed."
              End if
          End If
      End Sub
     

    Peut-on créer l'application console en utilisant le composant ActiveX?

    l est impossible de créer le composant l'application console en utilisant le composant ActiveX. L'application doit avoir la fenêtre pour travailer avec le composant.

     

    Est-ce que je peux choisir le dispositif nécessaire sans dialogue du choix standard du 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)
         MsgBox VSTwain1.GetSourceProductName(i)
      Next
    
    Le code suivent est le code de choix du premier dispositif:
      VSTwain1.StartDevice
      VSTwain1.sourceIndex = 0
      .....
      VSTwain1.Acquire
                            
    Mais la variante suivante est la meilleur:
      VSTwain1.StartDevice
      For i = 0 To (VSTwain1.sourcesCount - 1)
         If VSTwain1.GetSourceProductName(i) = "Gerätname" Then
           VSTwain1.sourceIndex = i
           Exit For
        End If
      Next
      .....
    
    Dans ce cas il est nécessaire de savoir le nom précis du dispositif.

     

    Comment je peux 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). Il est possible d’accomplir cela comme il suit:
      VSTwain1.StartDevice
      VSTwain1.showUI = False
      VSTwain1.disableAfterAcquire = True
      VSTwain1.maxImages = 1
      VSTwain1.OpenDataSource
      VSTwain1.showIndicators = 0  ' Désactiver l'indicateur de la fenêtre
      VSTwain1.Acquire
    


     
    Je dois scanner seulement une partie de l’image. Comment faut-il faire cela?
    Utilisez le code suivant pour recevoir la partie de l’image limité par le rectangle (0.2,0.2) - (8.3,10.8):

      VSTwain1.StartDevice()
      VSTwain1.showUI = False
      VSTwain1.OpenDataSource()
      .............
      VSTwain1.unitOfMeasure = 0
      VSTwain1.SetImageLayout(0.2,0.2,8.3,10.8)
      VSTwain1.Acquire()
     

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

    Voilà l'exemple où la résolution selon l'axe X est égal aux 4800 dpi, mais selon l'axe Y est égal aux 9600 dpi:
      VSTwain1.StartDevice
      VSTwain1.showUI = False
      VSTwain1.disableAfterAcquire = True
      VSTwain1.maxImages = 1
      VSTwain1.OpenDataSource
      VSTwain1.unitOfMeasure = 0   ' pouces
      VSTwain1.capability = 4376   ' ICAP_XRESOLUTION (0x1118)
      VSTwain1.capType = 1         ' une valeur
      VSTwain1.capValue = 4800     ' 4800 dpi
      VSTwain1.SetCap
      VSTwain1.capability = 4377   ' ICAP_YRESOLUTION (0x1119)
      VSTwain1.capType = 1         ' une valeur
      VSTwain1.capValue = 9600     ' 9600 dpi
      VSTwain1.SetCap
      VSTwain1.Acquire
    

     
    Comment choisir l'orientation de l’image pendent le scanning?
    Vous pouvez choisir l'orientation de l’image pendent le scanning seulement si le scanner supporte la possibilité suivent:
      .....
      VSTwain1.OpenDataSource
      VSTwain1.capability = 4368    ' ICAP_ORIENTATION (0x1110)
      If VSTwain1.IsCapSupported Then
        VSTwain1.capType = 1        ' une valeur
        VSTwain1.capValue = 3       ' Landscape
        VSTwain1.SetCap
      End If
      .....
    
    Les valeurs possibles pour l'orientation:
      0     Orientations de livre, rotation pour 0 degrés
      1     Rotation pour 90 degrés
      2     Rotation pour 180 degrés
      3     Orientations d'album, rotation pour 270 degrés


     
    Notre organisation utilise le scanner avec un chargeur automatique des feuilles (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()
          VSTwain1.StartDevice()
          If VSTwain1.SelectSource() = 1 Then         ' Le choix du dispositif
              VSTwain1.showUI = False                 ' Le arrêt de l'interface d'utilisateur
              VSTwain1.disableAfterAcquire = True
              VSTwain1.maxImages = 1
              VSTwain1.autoCleanBuffer = True
              VSTwain1.tiffMultiPage = True           ' Fichier TIFF multi page
              VSTwain1.tiffCompression = 10           ' Détecter automatiquement des meilleurs 
                                                        algorithme de compression
              If VSTwain1.OpenDataSource() = 1 Then
                  VSTwain1.unitOfMeasure = 0          ' pouces
                  VSTwain1.pixelType = 0              ' Image en noir-blanc
                  VSTwain1.resolution = 200           ' 200 dpi
                  If VSTwain1.duplex <> 0 Then
                      VSTwain1.duplexEnabled = True   ' Permettre duplex
                  End If
                  If VSTwain1.feederPresent = 1 Then
                      VSTwain1.xferCount = -1
                      VSTwain1.feederEnabled = True
                      VSTwain1.autoFeed = True
                      If VSTwain1.feederLoaded = 1 Then
                          VSTwain1.Acquire()
                      End If
                  End If
              End If
          End If
      End Sub
    
      Private Sub VSTwain1_PostScan(ByVal flag As Long)
          If flag <> 0 Then
              If VSTwain1.errorCode <> 0 Then
                  MsgBox VSTwain1.errorString
              End If
          Else
    Dim currNoiseLevel As Single If VSTwain1.IsBlankImage(0,0.01,currNoiseLevel) = 1 Then 'check the first image documentsCounter = documentsCounter + 1 End If If VStwain1.SaveImage(0,"c:\documents\doc"+Str(documentsCounter)+".tiff") = 0 Then MsgBox VSTwain1.errorString End If If VSTwain1.dataSourceState = 0 Then VSTwain1.StopDevice() MsgBox "Scan completed." End if End If End Sub


     
    Est-ce que je peux utiliser les patch-codes pour la séparation des rgoupes de batched job? Si oui, comment définir la fin de batched job?
    Vous pouvez separer les batched job en vous utilisant la possibilité CAP_JOBCONTROL.
    L'exemple pour Visual Basic:

      Dim jobsCounter As Integer
      
      Private Sub Form_Load()
        jobsCounter = -1
      End Sub
      
      Private Sub Scan_Click()
        VSTwain1.StartDevice
        VSTwain1.maxImages = 1
        VSTwain1.showUI = 0
        VSTwain1.disableAfterAcquire = 1
        VSTwain1.tiffMultiPage = 1
        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_PostScan(ByVal flag As Long)
        If flag <> 0 Then
          If VSTwain1.errorCode <> 0 Then
            MsgBox (VSTwain1.errorString)
          End If
        Else
          If VSTwain1.endOfJob = 1 Then
            jobsCounter = jobsCounter + 1
          Else
            VSTwain1.SaveImage 0, "c:\job"+Str(jobsCounter)+".tif"
          End If
        End If
      End Sub
      .....


     
    Je dois savoir quand l’image sera reçue dans un logiciel, mais je ne peux pas utiliser l'événement PostScan. Comment régler ce problème?
    А partir de la version 3.0 vous pouvez utiliser la méthode AcquireModal pour resoudre ce problème.

    L'exemple pour Visual Basic:

      VSTwain1.appProductName = "MyTwainApplication"
      If VSTwain1.StartDevice() Then
          VSTwain1.SelectSource
          VSTwain1.showUI = True
          While VSTwain1.AcquireModal() = 1
              Set Image1.Picture = VSTwain1.GetCurrentImage()
              If VSTwain1.SaveImage(0, "c:\test.tiff") = 0 Then
                  MsgBox (VSTwain1.errorString)
              End If
          Wend
      Else
          MsgBox VSTwain1.errorString
      End If
    


     
    Est-ce que je peux recevoir les images avec la profondeur de la couleur à 48 bits pour le pixel?
    Oui. А partir de la version 3.0 il est apparu la possibilité de recevoir les images en couleur avec la profondeur de la couleur à 48 bits pour le pixel et les images grises avec la profondeur de la couleur à 16 bits pour le pixel. Ces images ne peuvent être sauvegardés sans perte de la profondeur de la couleur que dans les fichiers au format TIFF.


     
    Quand j'utilise le scanner HP ScanJet j’observe une perte d’un pouce de l’image dans la partie supérieure de l’image et le rectangle noir avec un pouce de hauteur apparait dans la partie inférieure de l’image. Pourquoi?
    Pour résoudre ce problème vous devez changer la valeur de la propriété pageSize de A4 à USLETTER.


     
    Est-ce que je peux sauvegarder les images acquérir au champ OLE du tableau MS Access?
    Oui. Vous pouvez le faire. Il est nécessaire d'utiliser la méthode GetImageAsDIB.
    L'exemple pour MS Access ("OrderImage" c’est champ OLE du tableau):

    Option Compare Database
    Option Explicit
    
    Private Sub Form_AfterUpdate()
        On Error GoTo error1
        Image1.PictureData = Me![OrderImage]
        Exit Sub
    error1:
        Image1.Picture = ""
    End Sub
    
    Private Sub Form_Current()
        On Error GoTo error1
        Image1.PictureData = Me![OrderImage]
        Exit Sub
    error1:
        Image1.Picture = ""
    End Sub
    
    Private Sub BAcquire_Click()
        With VSTwain1
            .StartDevice
            If .SelectSource = 1 Then
                .autoCleanBuffer = 1
                .maxImages = 1
                .showUI = 1
                .Acquire
            End If
        End With
    
    End Sub
    
    Private Sub VSTwain1_PostScan(ByVal flag As Long)
        If flag <> 0 Then
            If VSTwain1.errorCode <> 0 Then
                MsgBox VSTwain1.errorString
            End If
        Else
            If VSTwain1.numImages > 0 Then
                If IsNull(Me!OrderName) Then
                    Me![OrderName] = " "
                    Me![OrderName] = "Order N" + Str(Me!Index)
                End If
                
                Me![OrderImage] = VSTwain1.GetImageAsDIB(0)
                If VSTwain1.errorCode <> 0 Then
                    MsgBox VSTwain1.errorString
                End If
                Form.Refresh
            End If
        End If
    End Sub
    

     
    Est-ce que je peux sauvegarder les images reçues dans le tableau MS SQL du serveur?
    Oui. Vous pouvez le faire. Il est nécessaire d'utiliser la méthode GetImageAsDIB.

    L'exemple pour C# comment sauvegarder l’image au tableau du serveur SQL:
      private void SaveToSql_Click(object sender, System.EventArgs e)
      {
         byte[] dib = (byte[]) VSTwain1.GetImageAsDIB(0);
         int imageSize = 14 + dib.Length;
         int imageOffset = 14 + 40;
         int imageBPP = VSTwain1.GetImageBPP(0);
         if (imageBPP == 1) imageOffset += 2*4;
         else if (imageBPP == 8) imageOffset += 256*4;
         
         byte[] image = new byte[imageSize];
         Array.Clear(image,0,imageSize);
       
         // BITMAPFILEHEADER
         image[0] = (byte)'B';
         image[1] = (byte)'M';
         image[2] = (byte)(imageSize&0xFF);
         image[3] = (byte)((imageSize&0xFF00)>>8);
         image[4] = (byte)((imageSize&0xFF0000)>>16);
         image[5] = (byte)((imageSize&0xFF000000)>>24);
         image[10] = (byte)(imageOffset&0xFF);
         image[11] = (byte)((imageOffset&0xFF00)>>8);
         image[12] = (byte)((imageOffset&0xFF0000)>>16);
         image[13] = (byte)((imageOffset&0xFF000000)>>24);
       
         Array.Copy(dib,0,image,14,dib.Length);
         
         // Insert the image into the database
         SqlConnection myConnection = new SqlConnection
    				(@"server=(local);database=northwind;uid=sa;pwd=");
         try
         {
            myConnection.Open();
            SqlCommand myCommand = new SqlCommand("DELETE FROM Images WHERE ImageID=1",
    							myConnection);
            myCommand.ExecuteNonQuery();
            myCommand = new SqlCommand ("INSERT INTO Images " 
            	+ "(Image, ImageID) VALUES (@Image, @ImageID)", myConnection);
            myCommand.Parameters.Add("@Image", image);
            myCommand.Parameters.Add("@ImageID", 1);
            myCommand.ExecuteNonQuery();
            MessageBox.Show("Image is saved successfully.");
         }
         finally 
         {
            myConnection.Close();
         }		
      }
    
    t l'exemple pour C# comment recevoir l’image sauvegardée d’abord au tableau du serveur SQL:
      private void BGetImageFromSql_Click(object sender, System.EventArgs e)
      {
         SqlConnection myConnection = null;
         try    
         {        
            myConnection = new SqlConnection(@"server=(local);database=northwind;uid=sa;pwd=");
            SqlCommand myCommand = new SqlCommand("SELECT Image FROM Images WHERE ImageID=1",
    						myConnection);
            myConnection.Open();                
            
            // Get the image from the database.        
            byte[] imagedata = (byte[])myCommand.ExecuteScalar();        
            if (imagedata != null)        
            {
               if (pictureBox1.Image != null)
               {
                  pictureBox1.Image.Dispose();
                  pictureBox1.Image = null;
               }
               MemoryStream stream = new MemoryStream(imagedata);
               pictureBox1.Image = new Bitmap(stream);
               MessageBox.Show("Image is loaded successfully.");
            }        
            else        
            {            
               MessageBox.Show("Image does not exist in database.");
            }    
         }    
         finally    
         {        
            myConnection.Close();    
         }		
      }
    


    J'utilise Visual FoxPro et je n'ai pas d'événement PostScan. Pourquoi?
    Pour le reglement de ce problème il est nécessaire d'ajouter la commande Application. AutoYield = .F. au début de l'application.




    Copyright © 2008 VintaSoft Ltd. Tous droits résérvés.