| Home | Download | Bestellen | Referenzen | Support | Über uns |
|
|||||||
|
VintaSoftTwain.NET Library 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: 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: Mit der Server-Lizenz können sie die Komponente nutzen in: Welche Beschränkungen hat die unregistrierte Version der Komponente? Die unregistrierte Version führt den Dialog "Über das Programm" bei jedem Scannen der Bilder. Die auch unregistrierte Version erlaubt, nur die Schwarz-weiß- und grauen Bilder zu speichern. Alle diese Beschränkungen sind in der registrierten Version der Bibliothek gelöscht. Bitte sehen Sie hier wie, die Komponente auf das Erhalten der Schwarz-weißbilder anzupaßen. Sie können alle Möglichkeiten der Komponente auf diesen zwei Typen der Bilder prüfen. Ich habe Probleme. Was kann ich tun? Die Antworten auf die meisten Fragen stehen bestimmt in der Dokumentation zur Komponente oder in den FAQ. Wenn Sie nicht fündig wurden, 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 ergänzen. 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 und die Server-Lizenz haben keine Beschränkungen zur Verbreitung. Die Entwickler-Lizenz hat Beschränkungen zur Verbreitung. Bitte lesen Sie das Lizenzabkommen für ausführliche Informationen. 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:
Wie kann ich die Schwarz-weißbilder einlesen? Da das Beispiel des Codes fur 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)
MsgBox VSTwain1.GetSourceProductName(i)
Next
Dieser Code für Wahl des ersten Gerätes:
VSTwain1.StartDevice VSTwain1.SourceIndex = 0 ..... VSTwain1.AcquireAber 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 ' disable indicator window 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
If e.action = Action.Deskew Then
txtAction.Text = "Deskewing..."
ElseIf e.action = Action.Despecle Then
txtAction.Text = "Despeckling..."
ElseIf e.action = Action.BorderDetection Then
txtAction.Text = "Border detecting..."
ElseIf e.action = Action.Rotation Then
txtAction.Text = "Rotating..."
ElseIf e.action = Action.ImageScan Then
txtAction.Text = "Image scan..."
ElseIf e.action = Action.ImageSaving Then
txtAction.Text = "Saving image to PDF document..."
End If
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 Fleckencodes verwenden, um die Stapelauftrage zu trennen? Wenn ja, wie kann ich das Ende des Stapelauftrag 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_PostScan(ByVal sender As System.Object,
ByVal e As VintaSoft.Twain.PostScanEventArgs) Handles VSTwain1.PostScan
If Not e.Flag Then
If VSTwain1.ErrorCode <> 0 Then
MsgBox(VSTwain1.ErrorString)
End If
Else
If VSTwain1.EndOfJob Then
jobsCounter = jobsCounter + 1
Else
VSTwain1.SaveImage 0, "c:\job"+jobsCounter.ToString()+".tif"
End If
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? Wenn Sie erworbene Bilder in Ihrem eigenen Puffer speichern möchten (z.B. im Sammlungobjekt in VB.NET), dann müssen Sie eine volle Kopie zurückgebrachtes durch die GetImage Methode Bildobjektes schaffen und setzten sie zu Ihrem Puffer. Sie können nicht zurückgebrachte durch die GetImage Methode Bildobjekt zum Puffer setzen, weil dieser Objekt zerstört wird, wenn Sie neues Bild erworben, oder wenn Sie werden StopDevice Methode kommen lassen. Hier ist korrekter Code: ...
Dim colDocumentPages As New Collection
...
Dim picNewPage As Image = New Bitmap(vnsScanner.GetCurrentImage)
colDocumentPages.Add(picNewPage)
...
Und hier ist nicnt korrekter Code:... Dim colDocumentPages As New Collection ... Dim picNewPage As Image picNewPage = vnsScanner.GetCurrentImage colDocumentPages.Add(picNewPage) ...
An Klient Seite Sie müssen das folgende tun:
VSTwain1.StartDevice() VSTwain1.object.SourceIndex = 1 ' second device VSTwain1.Acquire() Kann Ich die eingescannte Bilder in die Tabelle des MS SQL Server speichern? Ja, Sie können dies tun. Sehe bitte Beispiel 3 hier. |
||||||||