Produkt-Info
Referenzen |
VintaSoftTwain.NET SDK - FAQAllgemeine 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:
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 hat folgende Beschränkungen:
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.
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:
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 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.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 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.
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. 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.
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:
< OBJECT ID="VSTwain1" WIDTH=1 HEIGHT=1 Korrekte Nummer der Version ist sehr wichtig! Mit falscher Versionsnummer der Benutzer wird jedesmal wenn er Ihre Webseite öffnet "assembly" downloaden. An Klient Seite Sie müssen das folgende tun:
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
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 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
|