Control OCX para escaner

Post Reply
User avatar
Rafael Clemente
Posts: 365
Joined: Sat Oct 08, 2005 7:59 pm
Location: Barcelona, Spain

Control OCX para escaner

Post by Rafael Clemente »

He encontrado un control OCX muy bueno para manejar escanners TWAIN. Os lo podeis descargar aquí: http://www.viscomsoft.com/products/scanner/

Viene con algunos ejemplos en VB y VFP. Yo he probado el de VB y es excelente. He intentado utilizarlo desde FWH pero después de muchas pruebas no he conseguido nada. La verdad es que no tengo mucha práctica con ActiveX/Ocx

Alguien podría ponerme un ejemplo mínimo de cómo utilizarlo?. En teoría debería ser algo así:

Code: Select all

oActiveX := TActiveX():New(oWnd, ??????????)
oActiveX:SelectImageSource()
oActiveX:Scan()
Gracias,
Rafael
User avatar
Rafael Clemente
Posts: 365
Joined: Sat Oct 08, 2005 7:59 pm
Location: Barcelona, Spain

Post by Rafael Clemente »

Después de jugar un rato, he conseguido conectarme al OCX y adelantar algo:

Code: Select all

#include "fivewin.ch"
function Main()
local oWnd, oActiveX

DEFINE WINDOW oWnd TITLE "FiveWin ActiveX Support"
oActiveX := TActiveX():New( oWnd, "SCANNER.ScannerCtrl.1" )
@ 2,40 Button "SOURCE" Size 100,20 Of oWnd Action oActiveX:Do("SelectImageSource")
@ 4,40 Button "SCAN"   Size 100,20 Of oWnd Action Adquirir(oActiveX)
ACTIVATE WINDOW oWnd VALID (oActiveX:End(), .T.)
Return Nil

STATIC FUNCTION Adquirir(oActiveX)
Local n
n := oActiveX:Do("Scan")
n := oActiveX:Do("Save", "MiFoto1.jpg", "JPG")
Return Nil
En este ejemplo, el botón SOURCE funciona (o sea, permite elegir la fuente de escaneado)
El botón SCAN Lanza el escanner y captura una imagen. Pero no he conseguido que la presente en pantalla o la guarde en disco...

¿Hay alguien que quiera seguir mirándose este OCX y continuar el proyecto? Parece muy bueno (captura TIFs y PDFs), está bien de precio y puede usarse libre de royalties.

Rafael
George
Posts: 710
Joined: Tue Oct 18, 2005 6:49 pm

Post by George »

Rafael,
Este otro OCX de http://www.ciansoft.com/twaincontrolx/default.asp
Funciona perfecto con FWH.

he aqui un ejemplo de como usarlo:
_ := TOleAuto():New("TwainControlXTrial.Twain")
_:SelectDevice()
_:Acquire()
_:SaveMultiPagePDF("c:\TestScan.pdf")
_:WritePDF( "c:\TestScan.pdf")

Puedes bajar un demo del link mas arriba indicado.

Saludos,

George
User avatar
Rafael Clemente
Posts: 365
Joined: Sat Oct 08, 2005 7:59 pm
Location: Barcelona, Spain

Post by Rafael Clemente »

George:
Gracias por tu comentario. ¿En dónde esta la clase TOleAuto? Yo utilizo FWH 2.6 + Harbour y quizá sea una versión demasiado anticuada...
Rafael
George
Posts: 710
Joined: Tue Oct 18, 2005 6:49 pm

Post by George »

Rafael

Yo uso xHarbour Builder (la version comercial) conjuntamente con FWH; en esta version de xHarbour esta ya integrada tOleauto.
Creo que esta esta libreria esta tambien diponible para Harbour pero que hay que enlazarla al crear tu aplicacion.

George
User avatar
mmercado
Posts: 782
Joined: Wed Dec 19, 2007 7:50 am
Location: Salamanca, Gto., México

Post by mmercado »

Rafael Clemente wrote:¿En dónde esta la clase TOleAuto? Yo utilizo FWH 2.6 + Harbour y quizá sea una versión demasiado anticuada...
Rafael
Rafael, dame un email para enviarte HbOle.lib que seguramente te servirá.

Saludos.

Manuel Mercado
User avatar
Rafael Clemente
Posts: 365
Joined: Sat Oct 08, 2005 7:59 pm
Location: Barcelona, Spain

Post by Rafael Clemente »

Manuel:

Me encuentras en: rafaelclem@telefonica.net
Y muchísimas gracias por adelantado

Rafael
User avatar
Rafael Clemente
Posts: 365
Joined: Sat Oct 08, 2005 7:59 pm
Location: Barcelona, Spain

Post by Rafael Clemente »

George:
Me he bajado el OCX de Ciansoft y tu ejemplo funciona perfecto. Muchas gracias a ti y a Manuel Mercado
Saludos,
Rafael
User avatar
AIDA
Posts: 782
Joined: Fri Jan 12, 2007 8:35 pm

Re: Control OCX para escaner

Post by AIDA »

Hola después de pasar dos días y una noche sin dormir :cry:
haciendo pruebas para generar un PDF con imágenes desde el escáner, definitivamente solo me funciono el TwainControlXTrial.Twain :)

me podrían orientar como podría meter más de una imagen en un PDF que comando se usa del TwainControlXTrial.Twain para escanear multiples documentos creo que tendré que sacar el dinerito de mi cochinito de ahorros para la licencia :?

Les mando muchos saludos :D

Aida :wink:
Que es mejor que programar? creo que nada :)
Atropellada pero aqui ando :P

I love Fivewin

séʌǝɹ ןɐ ɐʇsǝ opunɯ ǝʇsǝ
User avatar
Rafael Clemente
Posts: 365
Joined: Sat Oct 08, 2005 7:59 pm
Location: Barcelona, Spain

Re: Control OCX para escaner

Post by Rafael Clemente »

Aida:
Prueba el OCR de Ciansoft: http://www.ciansoft.com/twaincontrolx/default.asp Va de maravilla: TIffs, PDFs, páginas únicas o multipágina...
Yo lo llamo mediante TActiveX() desde FWH y funciona sin problemas. Eso sí, recuerda que para manejar propiedades tienes que utilizar GetProp() y SetProp() y para ejecutar métodos, Do() y que necesitarás una versión de FWH posterior a julio del año pasado.
Un saludo,
Rafael
User avatar
AIDA
Posts: 782
Joined: Fri Jan 12, 2007 8:35 pm

Re: Control OCX para escaner

Post by AIDA »

Hola Rafael :D

Muchas gracias por contestar :) fíjate que ese control que me recomiendas es el mismo que definitivamente decidí usar.

no sé si seria mucha molestia me pudieras orientar de que comandos necesito para hacer que el escáner me permita meter más de una imagen en un PDF
ya tengo funcionando el escáner de modo simple :D solamente me falta el modo de escanear múltiples documentos en un PDF te agradecería mucho de tu ayuda

Saluditos :mrgreen:

Aida :wink:

mi messenger es - aida_p_z@hotmail.com
Que es mejor que programar? creo que nada :)
Atropellada pero aqui ando :P

I love Fivewin

séʌǝɹ ןɐ ɐʇsǝ opunɯ ǝʇsǝ
User avatar
Rafael Clemente
Posts: 365
Joined: Sat Oct 08, 2005 7:59 pm
Location: Barcelona, Spain

Re: Control OCX para escaner

Post by Rafael Clemente »

Aida:
Si ya tienes el control funcionando, hacer un PDF multipágina es sencillísimo.

1.- Crea el control: oImgBox := TActiveX():New(Self, "csXImage.ImageBox")

2.- Limpia las imágenes en memoria: oImgBox:Do("ClearPdf")

3.- Declara la función de manejo de eventos: oImgBox:bOnEvent := {|event, aParams, pParams| ::EventCapt(event, aParams, pParams, oImgBox)}

La funcion on EventCapt es más o menos así:

Code: Select all

 
METHOD EventCapt( event, aParams, pParams, oImgBox ) CLASS Escanear
     Case event = "OnAcquireFinish"
             oImgBox:Do("WritePdf", myFile)    // Aquí es donde creo el fichero PDF
     Case event = "OnAcquire"
              If File(myFile)
                 oImgBox:Do("Insert"+cExt, cFileDummy, "", 0)     // Si existe el fichero, grabo directo a disco
              Else
                 oImgBox:Do("AddToPdf", 0)      // Voy salvando las páginas a memoria
              Endif
EndCase
Return Nil 
 
Naturalmente, esto es sólo un esqueleto del programa. Seguro que tú ya has trabajado ajustando las diferentes propiedades del control.
Un saludo y suerte!

Rafael
User avatar
Rafael Clemente
Posts: 365
Joined: Sat Oct 08, 2005 7:59 pm
Location: Barcelona, Spain

Re: Control OCX para escaner

Post by Rafael Clemente »

Aida:
En mi ejemplo de antes había un error. La línea para grabar directo a disco debe ser:

Code: Select all

  
  oImgBox:Do("InsertPdf", myFile, "", 0)     // Si existe el fichero, grabo directo a disco
 
Rafael
User avatar
AIDA
Posts: 782
Joined: Fri Jan 12, 2007 8:35 pm

Re: Control OCX para escaner

Post by AIDA »

Hola gracias por el dato

me da pena :oops: pero no sé nada de métodos no entendí nada :(

yo solamente tome el ejemplo siguiente que me funciono

Code: Select all

 FUNCTION ScanOCX2(cFilename)
local _

_ := TOleAuto():New("TwainControlXTrial.Twain")
_:SelectDevice()
_:AddToPDF(0)
_:Acquire()
_:SaveMultiPagePDF("TestScan.pdf")
_:WritePDF( "TestScan.pdf")
presenta()
RETURN (.T.)
 
creí que seria sencillo hacer lo de las multipaginas en el manualito del control vi un comando es AddToPDF pero no sé cómo utilizarlo :?:

me da mucha pena :oops: pero no soy tan avanzada como muchos de esta fantástica comunidad :D

Gracias por todo :wink:

Aida
Que es mejor que programar? creo que nada :)
Atropellada pero aqui ando :P

I love Fivewin

séʌǝɹ ןɐ ɐʇsǝ opunɯ ǝʇsǝ
Post Reply