Produkt-Info


Überschau

Lizenzierung

FAQ

Forums

Beispiele

History


Download

Testversion

On-line manual

Referenzen





VintaSoftTwain.NET SDK - FAQ

Allgemeine Fragen:

 

Distribution:

 

Deployment:

 

Programmierung:

 

Web:

 

Datenbanken:

 

 

Für welche Zwecke kann ich die VintaSoftTwain.Net Bibliothek nutzen?

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

 


 

Was beinhaltet die Bibliothek?

Die Bibliothek beinhaltet:

  • VintaSoft.Twain Komponente - eine 100% .NET-komponente (Vintasoft.Twain.dll Datei)
  • 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\v1.1 und Bin\v2.0)
  • Demo Programmen für 64-bit System in WOW64(x86) Mode (Dateien in Bin\v2.0\64-bit)

 

 

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.

 

 

Kann ich VintaSoftTwain.NET SDK in 64-Bit-Version von Windows nutzen?

Ja, Sie können VintaSoftTwain.NET SDK in 64-Bit-Version von Windows benutzen.

Hier ist eine Liste der Schritte, die Sie tun sollten:

  • Laden Sie der letzte Version von TWAIN Data Source Manager von TWAIN web site (twaindsm-X.Y.Z.win.bin.zip file)
  • Legen Sie twaindsm.dll und twaindsm32.msm (Dateien aus "twaindsm-XYZwin.bin.zip\Twain32\"-Verzeichnis) in das "Windows\SysWow64\"-Verzeichnis
  • Legen Sie twaindsm.dll und twaindsm64.msm (Dateien aus "twaindsm-X.Y.Z.win.bin.zip\Twain64\"-Verzeichnis) in das "Windows\System32\"-Verzeichnis
  • Geben Sie Pfad zu dem TWAIN Data Source Manager in Ihrem Code:
      ...
      VSTwain1.TwainDllPath = "c:\Windows\SysWow64\twaindsm.dll"
      VSTwain1.IsTwain2Compatible = True
      VSTwain1.StartDevice()
      ...
    

 

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

Sie sollen diese Schritte tun, um den VintaSoftTwain.NET 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 VintaSoftTwain im Toolboxscheibe
  • VintaSoftTwain 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:

  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

 

 

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

Ein Beispielcode, um einen Scanner mit ADF ohne Benutzerschnittstelle zu steuern:

  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

 

 

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

Ein Beispielcode, um einen Scanner mit ADF ohne Benutzerschnittstelle und ohne PostScan Ereignis zu steuern:

  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

 

 

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

Sie können folgenden Code nutzen, um lediglich einen Teil des Bildes zu erhalten, welches beschränkt ist durch ein Rechteck (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()

 

 

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

Sie können folgenden Code nutzen, um ihre Geräte aufzuzählen:

  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
Dieser Code für Wahl des ersten Gerätes:
  VSTwain1.StartDevice()
  VSTwain1.SourceIndex = 0
  .....
  VSTwain1.Acquire
Aber dieser Weg ist der Beste:
  VSTwain1.StartDevice()
  For i = 0 To VSTwain1.SourcesCount - 1
     If VSTwain1.GetSourceProductName(i) = "Your device name" Then
       VSTwain1.SourceIndex = i
       break
    End If
  Next
  .....
In diesem Fall müssen sie den korrekten Gerätenamen wissen.

 


 

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:

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

 

 

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 Progress event verwenden. Hier ist ein Beispiel:

  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

 

 

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 4800 dpi und die Auflösung der Y-Achse auf 9600 dpi setzt:

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

 

 

Ich möchte Dokumente in einem separate thread abfühlen. Ist es möglich?

Ja, es ist möglich, wenn die AcquireModal Methode verwendet wird. Hier ist ein Beispiel für 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);
      }
    }
    .....
  }
  .....

 

 

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 IsBlankPage-Methode suchen. Hier sehen Sie ein Beispiel:

  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

 

 

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:

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

 

 

Ich möchte die angescannte Bilder in die Sammlung speichern und dann im Prozeß sie bearbeiten. Wie kann ich das tun?

GetImage/GetCurrentImage Methoden geben eine neue Bitmap-Objekt, so Sie können es in Ihrer Sammlung nutzen:

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

 

 

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:

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

 

 

Wie kann ich erhalten erweiterte Bildinformation von dem Scanner?

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

  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

 

 

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. Diese Bilder können ohne Verlust der Farbtiefe nur in den TIFF-Dateien gespeichert sein.

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

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

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

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

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

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

 

 

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:

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

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

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

 

 

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

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

  • 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 1.1 oder höher muß benutzt werden.
  • Internet Explorer 6.0 und höher oder Mozilla Firefox 3.0 und höher mit IE Tab Plug-in muß benutzt werden.
  • Sie müssen Ihre Web-Site zu die "Trusted Runtime Security Group" in .NET hinzufügen

    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.

  • 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 VSTwain object 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., 5.0.5.3).

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

Hier ist ein Beispiel:

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

Das ist alles, was Sie machen sollen.

 

 

Ich versuche Vorrichtung mit der SourceIndex Eigenschaft im Internet Explorer vorzuwählen, aber ich erhalte ein Fehler. Warum?

Jeder Objekt der Webseite im Internet Explorer hat eine SourceIndex Eigenschaft. Dieses ist eine Read-only-Eigenschaft. Sie müssen den folgenden Code verwenden, um mit einer SourceIndex Eigenschaft eines VSTwain Objektes im Javascript oder in VBScript zu arbeiten:

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

 

 

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:

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

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

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

 

 

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.

 

 

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:

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

  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