Uso de archivos pdf desde VB6

Respuesta de
a
Usuario
Hola: ante todo muchas gracias por tu tiempo, te paso a contar el problema que tengo: hice un .pdf con determinados campos para que llenen los clientes. Se lo envío por mail y al reenviármelos debo levantar los datos que completaron en esos campos con el programa de gestión (en VB6) que desarrollé, para pasar esos datos a la base.
El tema es que nunca trabaje con .pdf y no tengo idea de como conectarme a este archivo por el VB6. Si me podes tirar un ejemplo de código o donde puede haber ( no encontré nada ) te lo agradecería. Desde ya muchas gracias por tu tiempo.
Javier
Experto
Mi Nick es hjmelgar.

Mi correo es hjmelgar@yahoo.com

Envíame el *.pdf y si puedes la BDD (vacía, es decir que me interesa la estructura)

No he contestado muchas preguntas, porque nadie me ha preguntado.
Antes disponía de mayor tiempo, así que contestaré tus preguntas y hasta creo que podré hacerte el ejemplo, pero en el futuro no se si podré hacerlo ... Espero tu mail
Experto
La pregunta es muy interesante y personalmente, nunca vi un caso como el que tu planteas.
Si no he entendido mal, estás utilizando un formulario pre-diseñado en formato *.pdf para recolectar datos vía e-mail de determinados usuarios, que luegos quieres convertir en datos para cargar en una base de datos ¿correcto?
Bien. Si ese formulario es fijo y lo único que cambian son los datos remitidos te diré lo que yo haría.

Cualquier archivo puede ser considerado un archivo binario y abierto con la instrucción "Open"
Por ejemplo:
Open archivo_pdf For Binary Access Read Lock Read As #1

Examina con un editor hexadecimal (yo aún utilizo el viejísimo Xtree-Gold para D.O.S) el formulario pre-diseñado y obtiene la cadena binaria que delimitará los campos variables.
Una vez que hayas obtenido los delimitadores de datos en formato hexadecimal (por ejemplo: delimitador="&h4f" & "&hfe" & "Hf33", abres el archivo en formato de solo lectura como hemos visto y buscas con la función de Visual Basic
Instr
el lugar donde cada una de estas cadenas se encuentra.
por ejemplo:
Dim campo(16) ' si son 16 campos a "rellenar"
' a sería el *.pdf
' b sería el delimitador
For t = 1 To Len(a)
lugar(campo) = InStr(t, a, b, vbBinaryCompare)
If lugar(campo) = 0 Then Exit For
Next

Una vez obtenidas las direcciones donde se encuentran las cadenas de delimitación de los datos, recoger los mismos en cadenas es muy sencillo: utiliza la función mid(lugar, posición, longitud)
Lugar será la posición del delimitador anterior +1 donde buscarás ...
Posición será el lugar donde has ubicado cada delimitador,
Y longitud puede ser la longitud esperada por ti (si has previsto campos de longitud fija eso será mucho más fácil). Si no tienen longitud fija deberás restar el lugar(actual) - lugar(anterior) y la diferencia entre estas dos direcciones, menos la extensión de los delimitadores te dará la longitud del campo examinado.

Luego conviertes todas esas cadenas en los datos esperados por los campos de la BDD.
Por ejemplo: si es una cadena
"30" la conviertes a Long si es el formato esperado, la convertirás con CLng(string)
Para ello podrías hacer un formulario donde validar los datos o convertirlos y luego de agregar un registro a la BDD o buscar el Registro a actualizar haces una tarea del tipo bdd.recordset.update
Eso sería la teoría para construir un "interfase" entre *.pdf y *.mdb o los datos que fueran.
No conozco OCX alguna que haga esta tarea, ni la he visto en foro alguno.

Disculpa lo genérico de mi respuesta, pero tu pregunta también ha sido genérica.
Si no sabes como obtener los delimitadores de un archivo que sirve como fuente de BDD, envíame el formulario *.pdf y te devolveré los delimitadores en formato hexadecimal.
Espero que te haya servido mi respuesta.
Usuario
Por favor, mandame tu dir de mail así te envío el .pdf y te detallo mejor mi problema.
Igualmente, me pareció fantástica tu dedicación para la consulta que te hice, y decime por favor tu nombre de experto, ya que como hice a varios esta pregunta y en ningún lado de la página dice quien es el que responde, no se la verdad a quien tengo que agradecer tanta dedicación.
Javier