Extraer texto desde pdf

Llevo cierto tiempo intentando extraer el texto de un fichero pdf desde una aplicación que me estoy haciendo en VB.
También he necesitado hacerlo de excel y no he tenido problema, pero una vez que cargo la referencia (acrobat. Tlb) ahora no sé como seguir. He intentado varias cosas pero me dan error.
Una vez que tenga el texto en variables o en listas o en lo que sea, ya sabré seguir. Mi problema es acceder al docemento pdf desde VB.

2 respuestas

Respuesta
1
Disculpa lo que se sobre pdf fue lo que envíe no puedo ayudarte más, suerte
Hola Rodolfo
Gracias por tu respuesta tan completa y rápida.
He probado las 3 cosas que me dices y ya, al menos puedo abrir un pdf desde vb.
Pero mi problema no era hacerme un visor con el WebBrowser(solución 3 que te agradezco ya que lo desconocía y seguro que en el futuro lo usaré mucho... Gracias!)
Hasta ahora he conseguido abrir internamente el pdf de la siguiente manera:
Dim formApp As AFORMAUTLib.AFormApp
Dim acroForm As AFORMAUTLib.Fields
Dim field As AFORMAUTLib.field
Dim bOK As Boolean
Dim avDoc As CAcroAVDoc
Dim pdDoc As CAcroPDDoc
Set avDoc = CreateObject("AcroExch.AVDoc")
bOK = avDoc.Open("C:\Mis documentos\domicilios.pdf", "titulo")
Pero sigo teniendo varias dudas:
1.- ¿Cómo puedo hacer un "barrido" de todos los campos que tiene el pdf y así elegir los que me interesan para meterlos en variables?
2.- En el "titulo" ¿qué tengo que poner? Quizá sea eso mismo, pero yo lo que quiero es abrir un pdf existente, no crear uno...
Perdona por las barbaridades que seguro he escrito, pero no tengo otra forma de aorender.
Te agradezco todo el tiempo que empleas en mis dudas.
Un saludo.
1)Se puede pero es bien complicado.
Primero: Tienes que tener Acrobat 4.0 ó 5.0.
Segundo:Tienes que ir la menú Proyecto ... Referencias e:
Incluir las referencias a: Acrobat. Tlb en la carpeta
C:\Archivos de programa\Adobe\Acrobat X.0\Acrobat y
C:\Archivos de programa\Adobe\Acrobat X.0\Plug_ins\acroform.api
eso como paso previo, luego tienes que hacer otra serie de pasos.
Para reducir espacio baja primero el Acrobat SDK 5.0 de Acrobat.com, instálalo y busca en C:\Archivos de programa\Adobe\Acrobat 5.0 SDK\InterAppCommunicationSupport\Samples\Visual Basic\FormsAutomation\FormsAutomation.vbp. Ese es un ejemplo ilustrativo de cómo hacerlo
OTRA FORMA
2)dos formas, desde el formulario y en forma externa.
'********* En forma externa: ********************
'pega en modulo
Public Declare Function ShellExecute Lib "shell32.dll" Alias "ShellExecuteA" (ByVal hwnd As Long, ByVal lpOperation As String, ByVal lpFile As String, ByVal lpParameters As String, ByVal lpDirectory As String, ByVal nShowCmd As Long) As Long
'pega en formulario
ShellExecute 0, "open","c:\archivo.pdf", vbNullString, vbNullString, 1
'********* En forma interna: ********************
'Habilita el conponente de adobe acrobat.
'luego agrega el objecto en tu formulario.
'y asi se llama.
Pdf.src = (ruta)
OTRA FORMA
3)Tener el Acrobat Reader Instalado(requerimiento)
Dentro de nuestro Controles insertamos los controle de Microsoft Internet Controls, después insertamos el comoponente "WebBrowser1", seguidamente de esto insertamos un botón y colocamos este código..
Private Sub Command1_Click()
'Dim ie As Object
WebBrowser1.Navigate "d:\corolla.pdf"
End Sub
Respuesta
1
Con el objeto del acrobat reader los puedes leer, pero no lo puedes ver línea por línea como lo quieres, para eso tendrías que tener instalado el acrobat writer.
Checa en la página de acrobat para que veas que otras posibilidades tienes.
Lo veo bien, pero no hace falta referenciar la creación del objeto de donde esta tomando los nuevos objetos.
Ahora, lo que veo es que le indicas que abra el archivo pero al momento de ver el documento no se lo indicas, no será este el problema.
If PDDoc.Open("C:\Mis documentos\seneca\domicilios.pdf") Then
AcroApp.Show
Set AvDoc = PDDoc.OpenAVDoc("")
' Set AcroForm = AFormAut.
Set Fields = AcroForm.Fields
Hola David, gracias por responder. Tengo instalado el writer y puedo modificar los pdf desde él, pero lo que yo quiero es actualizar mis variables en VB desde texto que se encuentra en campos de pdf.
Hasta ahora he conseguido abrirlo, pero cuando intento contar los campos que tiene me dice que cero:
fcounts= Fields.Count
y cuando intento ir campo por campo:
For Each Field In Fields
siempre se sale del For porque Field es cero.
Aquí te mando lo que tengo hasta ahora. Te agradecería que lo probaras y a ver si averiguas una manera de explorar los campos de texto. Un saludo y gracias por tu tiempo.
Sub leer_pdf()
Dim AcroApp As Acrobat.CAcroApp
Dim PDDoc As Acrobat.CAcroPDDoc
Dim AvDoc As Acrobat.CAcroAVDoc
Dim sFieldName As String
Dim Field As AFORMAUTLib.Field
Dim Fields As AFORMAUTLib.Fields
Dim AcroForm As AFORMAUTLib.AFormApp
Dim fcount As Long
Set AcroApp = CreateObject("AcroExch.App")
Set PDDoc = CreateObject("AcroExch.PDDoc")
Set AvDoc = CreateObject("AcroExch.AVDoc")
Set AcroForm = CreateObject("AFormAut.App")
If PDDoc.Open("C:\Mis documentos\seneca\domicilios.pdf") Then
AcroApp.Show
Set AvDoc = PDDoc.OpenAVDoc("")
' Set AcroForm = AFormAut.
Set Fields = AcroForm.Fields
fcount = Fields.Count
For Each Field In Fields
sFieldName = Field.Name
MsgBox sFieldName
Next Field
End If
AcroApp.Exit
Set PDDoc = Nothing
Set AcroApp = Nothing
Set AvDoc = Nothing
Set Field = Nothing
Set Fields = Nothing
Set AcroForm = Nothing
End Sub
No entiendo muy bien esto que me dices:
"Lo veo bien, pero no hace falta referenciar la creación del objeto de donde esta tomando los nuevos objetos."
Probaré lo otro queme dices, que creo que quieres decir que lo abra y después haga lo de "For Each Fields..." ¿no? Creo que eso es lo que hago, ya que para asegurarme de que estaba abierto hago que me lo muestre: "AcroApp.Show".
Bueno, no te molesto más. Gracias por todo y si se te ocurre la solución o pruebas y el código y lo modificas de manera que te funciona, te agradecería que me lo comunicaras en tu siguiente mensaje.
Si no lo conseguimos, pues nada. Gracias igualmente. Cerraré la pregunta tras tu próxima respuesta. Un saludo
No puedo probar el código porque no tengo el acrobat writer, pero no veo como vas relacionando los objetos, ya que son herencias unos de los otros, la aplicación se hereda hacia los demás objetos.
Yo tampoco he conseguido nada. Este código lo copié de una página que aseguraba que funcionaba, pero no sé como... No tengo conocimientos suficientes como para saber donde está el error.
Gracias de todas maneras tu interés

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas