Meinungen


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

Allgemeine Fragen:

 

Distribution:

 

Vertrieb:

 

Programmierung:

 

Web:

 

Datenbanken:

 

 

Für welche Zwecke kann ich die VintaSoftTwain.NET SDK nutzen?

Die Bibliothek hilft Ihnen, alle TWAIN-kompatiblen Geräte, wie Scanner, Web- und Digitalkameras zu steuern.

 


 

Was beinhaltet die Bibliothek?

Die SDK beinhaltet:

  • Vintasoft.Twain.dll Datei - a 100% .NET assembly
  • Documentation in CHM-Format (Help\Vintasoft.Twain.chm Datei)
  • Beispiele für MS Visual Basic.NET, MS Visual C#, ASP.NET
  • Demo Programmen für 32-bit System (Dateien in Bin\v2.\x86 und Bin\v4.0\x86)
  • Demo Programmen für 64-bit System (Dateien in Bin\v2.\x64 und Bin\v4.0\x64)

 

 

In welchen Programmiersprachen kann ich die VintaSoft.Twain Komponente nutzen?

Mit der Entwickler-Lizenz oder der Site-Lizenz können sie die Komponente nutzen in:

  • Microsoft Visual Studio .NET : Visual Basic, Visual C#, Visual C++, Visual J#
  • Borland Delphi 8.0, Borland C# Builder, Borland C++ BuilderX
  • anderen Sprachen, die kompatibel sind mit .Net Framework.

Mit der Server-Lizenz können sie die Komponente nutzen in:

  • Internet Explorer : ASP.NET, JavaScript, VBScript

 

 

Welche Beschränkungen hat die unregistrierte Version der Komponente?

Die unregistrierte Version hat folgende Beschränkungen:

  • NAG Bildschirm
  • jedes Bild kann auf eine Festplatte gespeichert oder auf den Server hochgeladen werden nur als BMP-Datei
  • erlaubt nur die Schwarz-weiß- und grauen Bilder zu speichern

Alle diese Beschränkungen sind in der registrierten Version der Bibliothek gelöscht.

 

 

Ich habe eine Frage oder Problem. Was kann ich tun?

Die Antworten auf die meisten Fragen stehen bestimmt in der Dokumentation zur Komponente oder in den FAQ. Wenn Sie können nicht antwort zu Ihre Frage finden, dann schreiben Sie bitte an den technischen Support.

 

 

Welche Dateien muss ich in das Distributionpaket meines Programms einbinden?

Sie sollen nur die Vintasoft.Twain.dll in das Distributionpaket Ihres Programms einbauen.

 

 

Kann ich die Vintasoft.Twain.dll zusammen mit meiner Anwendung ohne Lizenzzahlungen verbreiten?

Ja, Sie können die Komponente zusammen mit ihrer Anwendung verbreiten. Sie zahlen nur für die primäre Registrierung.
Die Site-Lizenz hat keine Beschränkungen zur Verbreitung. Die Entwickler-Lizenz hat Beschränkungen zur Verbreitung. Server-Lizenz Verbreitung ist nicht lizenzfrei. Bitte lesen Sie das Lizenzabkommen für ausführliche Informationen.

 

 

Was soll ich tun, wenn meine Programm-Verbreitung-Wert mit Entwickler-Lizenz kann 100 Exemplare in diesem Jahr überschreiten?

Wenn Sie die Entwickler-Lizenz besitzen und Ihre Programm-Verbreitung-Wert kann 100 Exemplare in diesem Jahr überschreiten, müssen Sie an unsere Verkaufsabteilung wenden. Sie werden die Möglichkeit bekommen, Ihre Entwickler-Lizenz durch die Site-Lizenz mit 30% Rabatt ersetzen oder zusätzliche Entwickler-Lizenz zu kaufen.

 

 

Was ist der Unterschied zwischen 1-Entwickler-Lizenz und Site-Lizenz?

  • 1-Entwickler-Lizenz muss von nur einem Programmierer in der Softwareentwicklung benutzt werden, dessen Name ist in die Lizenzdaten angegebenen.
  • Site-Lizenz muss in der Softwareentwicklung innerhalb eine Firma (bei beliebiger Programmierer) benutzt werden, dessen Benennung ist in die Lizenzdaten angegebenen.
  • 1-Entwickler-Lizenz kann auf jedem PC und auf jedem physikalischen Adresse in der Softwareentwicklung benutzt werden.
  • Site-Lizenz kann auf jedem PC nur auf einem physikalischen Adresse (innerhalb nur einem Büro) in der Softwareentwicklung benutzt werden.
  • 1-Entwickler-Lizenz erlaubt eine lizenzfreie Verteilung einer Programm, die SDK Redistributable Dateien integriert, bis zu 100 Kopien in einem Jahr.
  • Site-Lizenz erlaubt eine unbegrenzte lizenzfreie Verteilung einer Programm, die SDK Redistributable Dateien integriert.

 

 

Wie kann man die "Standard Edition"-Lizenz durch "Standard + WPF Edition"-Lizenz ersetzen?

Bitte an die Verkaufsabteilung wenden. Sie werden die Möglichkeit bekommen die äquivalent "Standard + WPF edition"-Lizenz mit 70% Rabatt zu kaufen.

 

 

Gibt es Unterschiede in der Nutzung meiner Anwendung auf Desktop PC oder auf einem Server?

Ja, es gibt Unterschiede. Um diese zu verstehen, bitte lesen Sie die Sektion "Deploying" in Dokumentation für dieses Produkt.

Begriffe: Desktop PC – Betriebssystem Windows XP, Vista, 7 installiert. Server – Betriebssystem Windows Server 2000, 2003, 2008 installiert.

 

 

Wie kann ich das Objekt Vintasoft.Twain.DeviceManager zu einer Form meines .NET-Projektes hinzufügen?

Sie sollen diese Schritte tun, um den Vintasoft.Twain.DeviceManager Objekt zu Ihrer Form hinzuzufügen:

  • Visual Studio.NET mit deinem eigenen Projekt beginnen
  • Die Hauptform in der Designansicht öffnen
  • Toolboxscheibe öffnen
  • Rechte Maus knopf an die Toolboxscheibe klicken
  • "Customize Toolbox..." Menüeinzelteil vom popup Menü auswählen
  • öffnen .NET Framework Components Tabelle
  • Klicken "Browse..." and VSTwain.dll file auswählen
  • Finden und überprüfen VintaSoftTwain Component in der Liste
  • Fenster mit OK Taste schließen
  • Finden und vorwählen Vintasoft.Twain.DeviceManager im Toolboxscheibe
  • Vintasoft.Twain.DeviceManager auf die Form setzen, indem Sie Steuerviereck vorwählen

 

 

Wie kann ich die Schwarz-weißbilder einlesen?

Da das Beispiel des Codes für das Erhalten der Schwarz-weißbilder:

  [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

 

 

Kann ich den ADF (Automatische Dokumenteinzüge) ohne Benutzerschnittstelle verwalten?

Hier ist ein Beispiel, das zeigt, wie Sie können asynchron die Bilder vom ADF-Scanner zu erwerben:

  [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

 

 

Kann ich mit ADF (Automatische Dokumenteinzüge) ohne Benutzerschnittstelle und ohne PostScan Ereignis arbeiten?

Hier ist ein Beispiel, das zeigt, wie Sie können synchron die Bilder vom Scanner zu erwerben:

  [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

 

 

Ich muß nur den Teil des Bildes einlesen. Wie kann ich es zu tun?

Hier ist ein Beispiel, das zeigt, wie Sie können nur den oberen Teil der Seite zu bekommen:

  [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

 

 

Wie kann ich Geräte ohne Auswahldialog wählen?

Hier ist ein Beispiel, das ziegt, wie Sie können das Gerät bei seinem Namen auswählen:

  [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

 


 

Wie kann ich die Fortschrittsanzeige ausblenden wenn ich Bilder ohne Benutzerschnittstelle einlesen mochte?

TWAIN Standard ermöglicht es die Fortschrittsanzeige abzuschalten, falls ShowUI=false. Dies kann folgendermaßen gemacht werden:

  [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

 

 

Ich möchte meine eigene Fortschrittanzeige des Bildscans herstellen. Ist es möglich?

Ja, es ist möglich wenn Sie einen Memory transfer mode verwenden - Sie sollten einen ImageAcquiringProgress event verwenden. Hier ist ein Beispiel:

  [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

 

 

Kann ich unterschiedliche Werte für die X- und Y-Auflösung verwenden?

Ja. Dies ist ein Beispielcode, wie man die Auflösung der X-Achse auf 200 dpi und die Auflösung der Y-Achse auf 400 dpi setzt:

  [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

 

 

Wir arbeiten mit einem Netztwerk-Scanner mit ADF und lesen sehr viele Dokumente pro Tag ein. Wie können wir unsere Arbeit automatisieren? Jedes Bild soll dabei in einer eigenen Datei abgelegt werden.

Sie können eine Leerseite zur Dokumententrennung nutzen und die Leerseiten als Dokumentenbegrenzer mit der AcquiredImage.IsBlank-Methode suchen. Hier sehen Sie ein Beispiel:

  [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

 

 

Kann ich Patch Codes verwenden, um Batch-Jobs zu trennen? Wenn ja, wie kann ich das Ende des Batch-Jobs ermitteln?

Sie können Batch-Jobs ermitteln, indem Sie die CAP_JOBCONTROL Fähigkeit verwenden. Hier ist ein Beispiel für Visual Basic:

  [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

 

 

Kann ich speichern die erworbenen Bilder zu PDF-Dokument?

Ja, Sie können das tun. Erworbene Bilder können als ein neues PDF-Dokument oder in ein bestehene PDF-Dokument gespeichert werden.
Hier ist ein Beispiel für 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")

 

 

Wie kann ich erhalten erweiterte Bildinformation von dem Scanner?

Dieses Beispiel zeigt, wie man kann erweiterte Bildinformation über Barcodes aus erworbene Bild benutzen:

  [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

 

 

Kann Ich die Bilder mit der 48 Bits Farbtiefe bekommen?

Ja, Sie können die Bilder mit der 48 Bits Farb- und 16-bit Grau-Tiefe bekommen.

Hier ist ein Beispiel, das zeigt, wie zu erwerben 48-bpp Farbbild ohne UI vom Scanner:

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


Hier ist ein Beispiel, das zeigt, wie zu erwerben 24-bpp Farbbild ohne UI vom Scanner:

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


Hier ist ein Beispiel, das zeigt, wie zu erwerben 16-bpp Graubild ohne UI vom Scanner:

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

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

 

 

Kann ich schaffen vordefinierte Tagung Setup für meine High-Volume-Scanner?

Ja, die Bibliothek ermöglicht zu laden und speichern vordefinierte Session Setups für Mid- und High-Volume-Scannern.

Hier ist ein Beispiel, das zeigt, wie Sie können speichern den aktuellen Geräte-Einstellungen in eine Datei:

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


Hier ist ein Beispiel, das zeigt, wie kann man zuvor gespeicherten Einstellungen in das Gerät laden:

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

 

 

Ich erhalte "Cannot initialize the device manager" Nachricht angezeigt, wenn ich versuche den TWAIN Geräte-Manager zu öffnen. Wie dieses Problem zu lösen?

Sie haben zu:

  • prüfen ob TWAIN DSM ist in das System installiert mit dem Eigenschaft DeviceManager.IsTwainAvailable
  • angeben der Pfad zu TWAIN DSM mit dem Eigenschaft DeviceManager.TwainDllPath
  • ändern die Version von TWAIN DSM mit dem Eigenschaft DeviceManager.IsTwain2Compatible.

TWAIN Data Source Manager (DSM) v1.X ist TWAIN_32.DLL, normalerweise diese Datei befindet sich in "C:\Windows\" Verzeichnis und ist vor allen 32-Bit Windows Versionen mitgeliefert.

TWAIN DSM v2.X für 32-bit Systeme besteht aus zwei Dateien: TWAINDSM.DLL und TWAINDSM32.MSM. Windows enthält diese DSM-Dateien nicht. In 32-Bit-Systemen müssen Sie diese DSM-Dateien in "C:\Windows\System32" Verzeichnis hinzulegen. In 64-Bit-Systemen müssen Sie diese DSM-Dateien in "C:\Windows\SysWow64\" Verzeichnis hinzulegen.

TWAIN DSM v2.X für 64-bit Systeme besteht aus zwei Dateien: TWAINDSM.DLL und TWAINDSM64.MSM. Windows enthält diese DSM-Dateien nicht. In 64-Bit-Systemen müssen Sie diese DSM-Dateien in "C:\Windows\System32\" Verzeichnis hinzulegen.

Die letzte Version der TWAIN DSM 2.X Sie können hier finden: http://www.twain.org oder http://sourceforge.net/projects/twain-dsm/files/.

 

 

Ich kann nicht die Geräte im TWAIN-Auswahl-Dialog aus meine Programm sehen, aber ich kann die Geräte in anderen Programm zu sehen. Warum?

Sie können Ihre Programm in "Any CPU"-Modus kompilieren, mit VintaSoftTwain.NET SDK Version 7.0 und höher, und Ihre Programm wird:

  • arbeiten in x32-Systemen mit TWAIN_32.DLL oder TWAINDSM.DLL (x32)
  • arbeiten in x64-Systemen mit TWAINDSM.DLL (x64)

Sie können Ihre Programm in "x86"-Modus (WOW) kompilieren, mit VintaSoftTwain.NET SDK Version 7.0 und höher, und Ihre Programm wird:

  • arbeiten in x32-Systemen mit TWAIN_32.DLL oder TWAINDSM.DLL (x32)
  • arbeiten in x64-Systemen mit TWAIN_32.DLL oder TWAINDSM.DLL (x32)

Sie können Ihre Programm in "x64"-Modus kompilieren, mit VintaSoftTwain.NET SDK Version 7.0 und höher, und Ihre Programm wird:

  • NICHT arbeiten in x32-Systemen
  • arbeiten in x64-Systemen mit TWAINDSM.DLL (x64)

Wir empfehlen die Verwendung von "x86"-Modus, da alle Scanner x32 TWAIN-Treiber haben, sondern nur neue und professionelle Scanner haben native x64 TWAIN-Treiber.

 

 

Welche Wirkungen soll ich erfüllen, um die Komponente auf meiner Website einzusetzen?

An Server Seite Sie müssen das folgende tun:

  • Die Vintasoft.Twain.dll File zum Server setzen.
  • Den folgenden Code in deiner Webseite verwenden:

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

    Korrekte Nummer der Version ist sehr wichtig! Mit falscher Versionsnummer der Benutzer wird jedesmal wenn er Ihre Webseite öffnet "assembly" downloaden.

  • Registrieren Sie Ihre Web-Applikation auf ASP.NET-Server (für weitere Informationen lesen Sie bitte diese Microsoft TechNet Artikel).
  • Das Subfolder, in dem du planst Bilder zu speichern, muß bewilligt werden Privilegien zu jeder schreiben.


An Klient Seite Sie müssen das folgende tun:

  • .NET Framework 2.0 muß installiert sein.
  • Internet Explorer 6.0 und höher oder Mozilla Firefox 3.0 und höher mit IE Tab Plug-in muß benutzt werden.
  • Ihre Website muß in .NET Framework 2.0 Sicherheitspolitik als vertraut hinzugefügt werden.

    So können Sie dies tun:

    • Microsoft .NET Framework Konfiguration von der Steuerfeld öffnen | Administrative Tools
    • Wählen Runtime Security Policy | Machine | Code Groups | All_Code
    • Rechte Maus knopf an "All_Code" klicken und "New" wählen, um eine neue Codegruppe zu schaffen
    • Die Codegruppe My_Web_Site nennen
    • Das Site Verhältnisse für die Codegruppe wählen
    • Der Site Name als my_web_site.com einstellen
    • Eine Erlaubnis zuweisen, die der Code-Gruppe als volles Vertrauen eingestellt wird

    Für mehr Information über .NET Sicherheit Politik bitte lesen Sie diesen MSDN Artikel MSDN Artikel.

    Wichtig: Nur DLL kompilierte unter .NET 2.0 kann in Web-Anwendungen verwendet werden. DLL Kompilierte unter .NET 4.0 kann nicht in Web-Anwendungen verwendet werden, da es ist nicht erlaubt .NET 4.0 WinForms-Steuerelemente im Internet Explorer verwenden.

  • Sie müssen Ihre Web-Site zu "Trusted Zone" in Internet Explorer 8.0 and higher hinzufügen.

    So können Sie dies tun:

    • Öffnen Sie den Internet Explorer und gehen Sie in Menü auf "Extras => Internet-Optionen", ein Fenster wird geöffnet.
    • Rechte Maus knopf an die Registerkarte "Sicherheit" und wählen Sie das Symbol "Vertrauenswürdige Sites". Klicken Sie auf die Schaltfläche "Sites", ein Fenster wird geöffnet.
    • Geben Sie Ihre Website in der Zeile. Entfernen Sie den Eintrag "Require Server (https :)...." wenn dies erforderlich ist. Rechte Maus knopf an die Schaltfläche "Hinzufügen".
    • Rechte Maus knopf an die Schaltfläche "Schließen". Ihre Web-Site ist jetzt in die Liste der vertrauenswürdigen Sites.
    Für mehr Information bitte lesen Sie diesen Artikel How Internet Explorer determines permissions for .NET Framework assemblies.

 

 

Ich möchte Script auf meiner Web site schaffen, die automatisch .NET Framework Sicherheit Einstellungen für mein web server zusammenbauen würde und erlaubte mir, komplizierte Konfigurationen Programme für den Endbenutzer zu vermeiden. Was sollte ich tun?

Sie können einen Script schaffen, der diesen Befehl durchführt:


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

 

 

Ich habe eine Meldung "Your .NET Framework Security settings must be configured to run the components in your browser" wenn ich meine Webprogramm laufen lasse. Was mache ich falsch?

Zuerst Sie sollen eine .NET Framework Politik einstellen, wie es ist hier beschrieben.

Zunächst Sie sollen überprüfen, welche Version von Vintasoft.Twain.dll Sie verwenden (z.B., 7.0.0.1).

Weiter Sie sollen einen OBJECT object in Ihrer Webseite richtig einstellen. Korrekte Versionnummer ist sehr wichtig!

Hier ist ein Beispiel:

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

Das ist alles, was Sie machen sollen.

 

 

Kann ich die Bilder scannen und sie auf den Server hochladen im Intranet-Anwendung mit integrierter Windows-Authentifizierung?

Ja, die Bibliothek erlaubt Sie alle Authentifizierungsmethoden unterstützt von. NET Framework zu nutzen.

Das folgende Beispiel zeigt, wie kann man nutzen Authentifizierung Informationen des aktuell angemeldeten Benutzer:

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

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


Das folgende Beispiel zeigt, wie kann man nutzen multipel Authentifizierungs-Informationen:

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

 

 

Kann ich die Bilder scannen und sie auf den Server hochladen im Internet-Anwendung mit Cookieless Forms Authentifizierung?

Ja, Sie können dies tun, siehe Beispiele 8 und 9 hier.

 

 

Wie kann man die Bilder von Scanner erwerben, als PDF-Strom speichern und auf den Server in JavaScript hochladen?

Wenn Sie verwenden VintaSoftTwain.NET SDK in JavaScript, Sie müssen wissen folgendes:

  • Indexer von Klasse kann nicht von JavaScript erhalten werden ", z.B. die Kodezeile "device.AcquiredImages [0]" ist nicht korrekt in JavaScript
  • JavaScript weiß nichts über ImageFileFormat Enumeration. Hier sind die Konstanten von ImageFileFormat Enumeration: BMP - 0, JPEG - 1, TIFF - 2, PNG - 3, GIF - 4, PDF - 5.
Das folgende Beispiel zeigt, wie kann man die erworbenen Bildern in Speicher als PDF-Strom speichern und (nachdem alle Bilder erworben werden) auf den Server hochladen:

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

  ...

 

 

Kann Ich die eingescannte Bilder in die Tabelle des MS SQL Server speichern?

Ja, Sie können dies tun. Sehe bitte Beispiel hier.

 

 

Ich möchte speichern erworbenen Bilder als PDF-Dokumente in der Datenbank. Kann ich das tun?

Ja, Sie können zuerst speichern erworbenen Bilder zu einem Fluß, um dann diese Daten in die Datenbank zu speichern.

Hier ist ein Beispiel, das zeigt, wie Sie jede erworbene Bild als separate PDF-Dokument in einem Fluß speichern können:

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


Und hier ist ein Beispiel, das zeigt, wie Sie alle erworbenen Bilder als ein einziges PDF-Dokument in einem Fluß speichern können:

  [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