Un posible uso es mediante automatizaci贸n escanear formularios de clientes , examenes , etc ,( c贸digo ya puesto en el foro ) y recoger los datos de estos escaneos para luego tratarlos . ( correcion autom谩tica de examenes tipo test por ejemplo )
Function extraerTextoPDF(cFilePdf)
// crearemos un objeto de tipo "pddoc" para el acceso al PDF
local numPagPDFObj := CreateObject("acroexch.pddoc")
local rutaFicheroPDF := cFilePdf
local lResultadoApertura := numPagPDFObj:Open(rutaFicheroPDF)
local numPaginas
local lResultadoCierre
local objPDF
local numeroPagina
// intentamos abrir el fichero pdf de acrobat
聽 If !lResultadoApertura
聽 聽 numPagPDFObj := nil
聽 聽 MsgInfo( "Error al intentar abrir el fichero pdf indicado. " + ;
聽 聽 聽 聽 "Puede que no sea un PDF de adobe o que el " + ;
聽 聽 聽 聽 "fichero est茅 corrupto." )
聽 聽 Return .f.
聽 EndIf
// obtenemos el n煤mero de p谩ginas del documento pdf
聽 numPaginas = numPagPDFObj:GetNumPages()
聽 lResultadoCierre = numPagPDFObj:Close()
聽 If !lResultadoCierre
聽 聽 numPagPDFObj := nil
聽 聽 MsgInfo( "Error al intentar cerrar el fichero pdf indicado. " )
聽 聽 Return .f.
聽 EndIf
聽 numPagPDFObj := nil
聽 objPDF = CreateObject("acroexch.pddoc")
聽 lResultadoApertura = objPDF:Open(rutaFicheroPDF)
聽 For numeroPagina = 0 To numPaginas - 1
聽 聽obtenerTextoPaginaPDF( 聽numeroPagina , objPDF )
聽 聽mensa("Extrayendo : " +alltrim(str( numeroPagina + 1 ))+ ;
聽 聽 聽 聽 " de " +alltrim(str( numPaginas )) )
聽 Next
聽 objPDF := nil
聽 mensa()
聽 msginfo("N潞 de p谩ginas extra铆das del pdf:" +alltrim(str( numPaginas 聽)) )
Return nil
Function obtenerTextoPaginaPDF( numPagina, ObjPDF )
聽local i
聽local pagPDF
聽local pagHilitelist
聽local resultadoHilitelist
聽local pagActual
聽local datosPDF := ""
// 聽creamos un objeto de p谩gina pdf, desde una p谩gina especificada
聽 pagPDF := objPDF:AcquirePage(numPagina)
// 聽crearemos un objeto "hilitelist", lo utilizaremos para extraer el texto
聽 pagHilitelist := CreateObject("acroexch.hilitelist")
聽 resultadoHilitelist = pagHilitelist:Add(0, 9000)
聽 pagActual = pagPDF:CreatePageHilite(pagHilitelist)
聽 For i = 0 To pagActual:GetNumText() - 1
聽 聽 聽 datosPDF = datosPDF + pagActual:GetText(i)
聽 Next
聽 msginfo( datospdf )
聽 ExtraerDatodelTexto ( datospdf ,"orden de domiciliaci贸n:" , CRLF )
聽 pagPDF := Nil
聽 pagHilitelist := Nil
聽 pagActual := Nil
Return .t.
//------------------------------------------------------------------------------
FUNCTION ExtraerDatodelTexto ( cTexto ,cTextoAntes , cTextoDespues )
LOCAL nLenTextoAntes := Len( cTextoAntes )
LOCAL nLenTextoDespues := Len( cTextoDespues )
LOCAL nInicio := At(cTextoAntes,cTexto) 聽+ nLenTextoAntes
LOCAL nFin := 聽At(cTextoDespues,cTexto)
LOCAL cDato := ""
IF nFin 聽== 0
聽 聽nFin := nil
endif
聽 IF nInicio != 0
聽 聽 聽cDato := SubStr( cTexto , nInicio , nFin )
聽 ELSE
聽 聽 聽msginfo("no se encuentra el delimitador inicial")
聽 聽 聽cDato := ""
聽 endif
聽 msginfo( cDato )
RETURN nil