| Inicio | Descargas | Registro | Testimonios | Soporte | Acerca de |
|
||||||||||||||||||
|
VintaSoftTwain.NET Library ¿Para qué fines puedo utilizar la biblioteca VintaSoftTwain.NET Library? Puede utilizar esta biblioteca para dirigir el trabajo del escáner, de cámaras digitales y web y otros dispositivos que sostienen el standard TWAIN. ¿Qué inclue esta biblioteca? La biblioteca inclue: ¿En qué lenguaje simbólico puedo utilizar esta biblioteca? La licenia elaboradora y la licencia de la companía permiten utilizar este componente en: La licencia del server permite utilizar este componente en: ¿Qué límites tiene la versión no registrada de la biblioteca? Los límites de la versión no registrada de la biblioteca: Todos estos límites están borrados de la versión registrada del componente. No ha encontrado la respuesta a mi pregunta. ¿Qué debo hacer? Puede encontrar la información sobre la mayoria de las preguntas en la docamentación o en este FAQ. Si no ha encontrado la respuesta a su pregunta, escriba al Servicio de Apoyo Técnico al Usuario. ¿Qué ficheros debo incluir en mi programa de distribuidor? Tiene que incluir solo un fichero: VintaSoft.Twain.dll. A la instalación de su programa hay que insertar este fichero en el catálogo que tiene la referencia aparecida durante la compilación del programa. ¿Puedo distribuir componente VintaSoftTwain.NET junto con mi aplicación sin algun pago complementario? Si, puede distribuir componente VintaSoftTwain.NET junto con su aplicacion. Paga solamente por el registro inicial. La licencia para la companía y para el server no están limitados en la distribución. La licencia del elaborador tiene ciertos límites en la distribución. Por favor, vea el contrato de licencia. ¿Cómo puedo añadir el componente VintaSoft.Twain al formulario de la aplicación? Para añadir el componente VintaSoft.Twain a la forma hay que hacer lo siguiente: ¿Como puedo recibir las imagenes en negro y blanco (documentación)? Esto es el ejemplo del código para recibir las imagenes en negro y blanco:
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
¿Puedo dirigir la entrega automática de los papeles sin interface del usuario? Esto es el ejemplo que muestra como se puede dirigir el trabajo del escaneo con la entrega automática de los papeles (ADF) sin interface del usuario:
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
¿Puedo dirigir la entrega automática de los papeles sin interface del usuario y sin evento PostScan? Esto es el ejemplo que muestra como se puede dirigir el trabajo del escaneo con la entrega automática de los papeles (ADF) sin interface del usuario y sin evento PostScan:
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
Tengo que escanear solamente una parte de la imagen. ¿Que debo hacer? Utilice el código siguiente para adquiridas una parte de la imagen delineada por el rectángulo (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() ¿Puedo elegir el dispositivo necesario sin dialogo estandartizado de la elección del dispositivo? Si. Para la numeración de dispositivos se puede utilizar el codico siguiente:
VSTwain1.StartDevice
For i = 0 To (VSTwain1.SourcesCount - 1)
MsgBox VSTwain1.GetSourceProductName(i)
Next
Esto es el c código para la elección del primer dispositivo:
VSTwain1.StartDevice VSTwain1.SourceIndex = 0 ..... VSTwain1.AcquirePero la mejor variante es la siguiente:
VSTwain1.StartDevice
For i = 0 To (VSTwain1.SourcesCount - 1)
If VSTwain1.GetSourceProductName(i) = "Your device name" Then
VSTwain1.SourceIndex = i
break
End If
Next
.....
En este caso es necesario saber el nombre correcto del dispositivo.¿Como puedo desconectar la ventana del indicador del proceso del escaneo al recibo de los imagenes sin interface del usuario? El estandard TWAIN permite desconectar la ventana del indicador del proceso del escaneo, si el interface del usuario no se utilice (ShowUI=False). Se puede hacer de la manera siguente: VSTwain1.StartDevice VSTwain1.ShowUI = false VSTwain1.DisableAfterAcquire = true VSTwain1.MaxImages = 1 VSTwain1.OpenDataSource VSTwain1.ShowIndicators = 0 ' inhabilitar indicador window VSTwain1.Acquire Quiero crear mi propio indicador del proceso del escaneo. ¿Es possible? Si, es possible, si la imagen se transmite del escaner al anexo por medio de la memoria (Memory transfer). Para crear su indicador del proceso del escaneo es necesario utilizar el evento Progress, por ejemplo: 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
¿Como puedo instalar la resolución diferente para los ejes X y Y durante el escaneo de imagenes? Esto es el ejemplo donde la resolución para el eje X es 4800 dpi, y para el eje Y 9600 dpi: 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 Quiero inicializar el proceso del escaneo en el hilo conductor separado. ¿Es possible? Si, es posible, si se utilice el método AcquireModal, por ejemplo para 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);
}
}
.....
}
.....
Nuestra organización utilice el escaneo de la red con la entrega automática de folios (ADF) y procesamos mucha documentación cada dia. ¿Como podemos automatizar nuestro trabajo? Quisieramos guardar cada papel en el fichero saparado. Puede utilizar la página blanca para dividir los papeles y definir las páginas blancas con ayuda del método IsBlankPage. Por ejemplo: 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
¿Puedo utilizar el código patch para dividir los trabajos de serie? Y ¿como puedo determinar el final del trabajo de serie? Puede dividir los trabajos de serie, utilice la opción CAP_JOBCONTROL. Esto es el ejemplo para Visual Basic .NET:
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
.....
Quiero guardar las imagenes adquiridas en mi buffer para el procesamiento subsiguiente. ¿Cómo puedo hacerlo? Si quiere guardar las imagenes adquiridas en su buffer (por ejemplo en el objeto Collection в VB.NET), debe crear la copia completa del objeto Image por medio de método GetImage, y instalarlo en su buffer. El objeto volveindo por la función GetImage no se puede instalar en el buffer directamente, porque el objeto será destruido cuando adquiere la imagen nueva o recurre al método StopDevice. Esto es el código correcto: ... Dim colDocumentPages As New Collection ... Dim picNewPage As Image = New Bitmap(vnsScanner.GetCurrentImage) colDocumentPages.Add(picNewPage) ...Esto es el código incorrecto: ... Dim colDocumentPages As New Collection ... Dim picNewPage As Image picNewPage = vnsScanner.GetCurrentImage colDocumentPages.Add(picNewPage) ... Cuando utilice el escaner HP ScanJet se pierde una media pulgada en la parte superior de la imagen y se añade el rectángulo negro en dimensión de una media pulgada en la parte inferior de la imagen. ¿Por que? Para resolver este problema tiene que cambiar el parámetro del atributo PageSize de A4 a USLETTER. ¿Que pasos debe dar para anadir la biblioteca a mi internet proyecto? Debe hacer lo siguiente al lado de server:
Debe hacer lo siguiente al lado del cliente:
VSTwain1.StartDevice() VSTwain1.object.SourceIndex = 1 ' segundo dispositivo VSTwain1.Acquire() ¿Puedo guardar las imagenes adquiridas en la tabla MS SQL del server? Si, puede hacerlo. Por favor, vea el ejemplo 3 de este articulo. |
|||||||||||||||||||