Imprimir página | Cerrar ventana

Pasar contenido campos a fichero PDF

Impreso de: Foro de Access y VBA
Categoría: Access y VBA
Nombre del foro: Access y VBA
Descripción del foro: Foro de programacion en Access (Con código y sin código)
URL: http://www.mvp-access.com/foro/forum_posts.asp?TID=85922
Fecha de impresión: 23/Abril/2021 a las 07:44


Tema: Pasar contenido campos a fichero PDF
Publicado por: Nomada
Asunto: Pasar contenido campos a fichero PDF
Fecha de publicación: 01/Abril/2021 a las 14:12
Buenas.
Hay alguna manera de pasar el contenido de un campo a un fichero PDF, al igual que pasamos contenidos de campos a fichero Word?

Gracias.





Respuestas:
Publicado por: acilu55
Fecha de publicación: 02/Abril/2021 a las 12:45
Perfectamente, solo tienes que abrir el formulario pdf en modo edicion y rellenar los campos igualandolos a los que tu quieras y muy importante cerrarlo bien despues ya que si no siempre te abrirá el mismo y no podrás guardar los resultados si es que quieres hacerlo




-------------
Gracias a todos de antemano


Publicado por: Nomada
Fecha de publicación: 02/Abril/2021 a las 15:33
Veamos.
Desde Access mediante código VBA, tomo el contenido de los campos deseados y en un documento, que previamente he elaborado en Word con sus marcadores, le indico los lugares donde debe poner el contenido de los campos.
En un fichero formulario PDF, cómo le indico donde debe ir cada contenido de cada campo?

Gracias.


Publicado por: acilu55
Fecha de publicación: 02/Abril/2021 a las 19:38
adaptalo a tus necesidades:

sRuta = CurrentProject().Path
Set fs = CreateObject("Scripting.FileSystemObject")
fs.CopyFile sRuta & "\ejemplo.PDF", sRuta & "\ejemplosalvado.PDF"  ' & sFichDes para guardar una copia del fichero
Set fs = Nothing

'Abrir fichero donde se sustituira
Open sRuta & "\ejemplo" For Binary As #1
strBytes = Space$(LOF(1))
Get #1, , strBytes
Close #1
strBytes = Replace(strBytes, "#(campo1)", Me.campo1, , , vbBinaryCompare) 'los que tienen el signo#   son los nombres de los campos del formulario .pdf
strBytes = Replace(strBytes, "#(campo2)", Me.campo2, , , vbBinaryCompare)
strBytes = Replace(strBytes, "#(campo3)", Me.campo3, , , vbBinaryCompare)
   
' Grabar fichero con los valores sustituidos
Open sRuta & "\ejemplo" For Binary As #2
Put #2, , strBytes
Close #2


-------------
Gracias a todos de antemano


Publicado por: Nomada
Fecha de publicación: 02/Abril/2021 a las 21:22
Solo una preguntita: donde puedo ver el nombre del campo en un formulario en pdf?


Publicado por: Nomada
Fecha de publicación: 03/Abril/2021 a las 11:14
Podrías decirme donde puedo encontrar documentación al respecto?, porque veo que me puede llevar algún tiempo en sacarlo.
Gracias.


Publicado por: acilu55
Fecha de publicación: 03/Abril/2021 a las 19:30
En adobe acrobat o cualquier programa que gestiones formulrios en Pdf, podras abveriguar los nombre de los campos que quieres rellenar, #(nombredecampoarellenar), en tu formulario access sabras el [nombredelformulario]![nombredelcampoacolocarenelpdf] Me.campo1 que está en el código, creo que no necesitas mucho mas. no obstante uno de los mejores manuales para tratar pdf son los de  Itextsarp, que te  cuentan casi todo sobre como tratar archivos pdf: insertar imagenes, cambiar textos... yo estpy con el intentando incluir una firma digital conc y me está costando, pero confió en lograrlo con ayuda de la gente del foro es es muy, pero que muy generosa con los demas.
Un saludo desde Zamora.


-------------
Gracias a todos de antemano


Publicado por: Nomada
Fecha de publicación: 04/Abril/2021 a las 10:46
Antes de nada muchas gracias acilu55.
Iré recopilando información, pero como veo que esto me llevará tiempo, voy a dejarlo para otro momento.
Este hilo se puede cerrar satisfactoriamente.
Saludos.


Publicado por: mounir
Fecha de publicación: 04/Abril/2021 a las 12:15
Hola!

Hay un truco que a lo mejor te sirva.
Conviertes el formulario PDF en una imagen y la pones como fondo de un informe e insertas encima de los campos del PDF los controles Access que necesites.
No sé si emiliove había hecho algo parecido.

-------------
Un Saludo.


Publicado por: xavi
Fecha de publicación: 04/Abril/2021 a las 14:19
Te recomiendo que visites esta página:  http://accessmvp.com/thedbguy/demos/fillablepdf.php" rel="nofollow - http://accessmvp.com/thedbguy/demos/fillablepdf.php

Yo me he basado en ella para rellenar los PDF.

Un saludo


-------------
Xavi, un minyó de Terrassa

http://www.llodax.com" rel="nofollow - Mi web


Publicado por: Nomada
Fecha de publicación: 06/Abril/2021 a las 18:38
Mounir eso es lo que estaba haciendo, tomar el formulario como una imagen, pasarlo a Word y colocarle los marcadores. La verdad es que no queda mal.
Por otro lado, también voy a estudiar el enlace de Xavi.
Gracias.


Publicado por: Nomada
Fecha de publicación: 10/Abril/2021 a las 10:06
Veamos.
La idea de Mounir es la que estaba usando, pero el problema es que al capturar el PDF en imagen pierde un poco (queda un pelín difuminado).

La respuesta de acilu55 me resulta de momendo un poco compleja, aunque la verdad no la descarto, pues puede que sea lo que necesito.

Y por último después de ver la página de recomendación de xavi, creo que no es lo que estoy buscando, ya que después de traducir la página y ver el código del ejemplo, he visto que crea un PDF, y yo no quiero crearlo.

Resumiendo, deseo utilizar los ficheros de formularios de las distintas administraciones, para poner el contenido de los campos desde Access.

Gracias a todos y un saludo.


Publicado por: mounir
Fecha de publicación: 10/Abril/2021 a las 12:12
Hola!

El enlace de xavi te lleva a esta página que hay un ejemplo que hace lo que quieres.
Tan solo te tienes que registrar en la página y lo descargas.

https://www.utteraccess.com/topics/1985323" rel="nofollow - theDBguyPDFDemoV1.zip

-------------
Un Saludo.


Publicado por: Nomada
Fecha de publicación: 10/Abril/2021 a las 14:59
Mounir, en la página de xavi vienen las demos:
- theDBguy PDF Demo V1.1.zip
- theDBguy PDF API Demo V1.1.zip
- theDBguy PDF Form Fields Demo V1.0.zip

pero theDBguyPDFDemoV1.zip no la veo.

Si es el primero, al probarlo abre el fichero theDBguy.pdf, pero no exporta al Pdf ningún dato de los dos campos que tiene su formulario.

Gracias



Publicado por: mounir
Fecha de publicación: 10/Abril/2021 a las 16:26
Hola!

No es así. Funciona perfectamente, lo que pasa es que el propio PDF lo bloquea y deja opciones de confiar en el archivo que al seleccionar la opción confiar se rellena el formulario PDF. Este aviso se ubica debajo de menú de herramientas, por lo menos en mi caso es así.

-------------
Un Saludo.


Publicado por: Nomada
Fecha de publicación: 10/Abril/2021 a las 21:42
Si, pero cual de ellos?
Además, estoy probando a registrarme y no hay forma.
Seguiré intentándolo


Publicado por: mounir
Fecha de publicación: 10/Abril/2021 a las 21:52
Hola!

Cualquiera de ellos. Si no tienes el ejemplo, ¿como dices que no hace lo que quieres?

-------------
Un Saludo.


Publicado por: acilu55
Fecha de publicación: 11/Abril/2021 a las 17:44
Nomada perdona que vuelva a intervenir: la solucion que te he propuesto es muy sencilla:
Crea con un formulario con un editor de pdf. (Creo que puedes guardar el formulario del word conservando el nombre de los campos que hayas puesto, incluso si rellens los campos del word puedes convertilo en pdf desde access)
los campos los llamaras #nombre, #apellidos, etc, simplifica el asunto si tienen los mismos nombre que en el formulario en el que escribas los valores. Una vez hecho esto rellenas los campos del pdf. con los calures del formulario, bien con la rutina que te puse antes bien con esta

´¡-----------------------------------------------
Dim strfilename As String
Dim formApp As AFORMAUTLib.AFormApp
    Dim acroForm As AFORMAUTLib.Fields
    Dim field As AFORMAUTLib.field
    Dim bOK As Boolean
    Dim avDoc As CAcroAVDoc
    
 strfilename = Application.CurrentProject.Path & "\datos.pdf"
    
    Set avDoc = CreateObject("AcroExch.AVDoc")
   bOK = avDoc.Open(strfilename, "fichero" & Me.APELLIDO_1 & " " & Me.APELLIDO_2)

    Set formApp = CreateObject("AFormAut.App")
    Set acroForm = formApp.Fields
    Dim myField As AFORMAUTLib.field

    For Each myField In acroForm
      
        Select Case myField.Name
  
  Case Is = "cliente"
             myField.Value = Me.[nombre] & " " & Me.APELLIDO_1 & " " & Me.APELLIDO_2
             
             Case Is = "numero"
             myField.Value = Me.Número
             
             Case Is = "piso)"
             myField.Value = Me.Piso
             
             Case Is = "localidad"
             myField.Value = Me.LOCALIDAD
             
             Case Is = "cp"
             myField.Value = Me.CP
             
             Case Is = "provincia"
             myField.Value = Me.Provincia
             
             Case Is = "tfno"
             myField.Value = Me.TFNO
             
             Case Is = "movil"
             myField.Value = Me.MOVIL
             
             Case Is = "mail"
             myField.Value = Me.mail
            
             Case Is = "nº cliente"
            myField.Value = Me.[nº cliente]
            
            Case Is = "apellido1"
                myField.Value = Me.APELLIDO_1
               
             Case Is = "apellido2"
                myField.Value = Me.APELLIDO_2
             Case Is = "nombre"
                myField.Value = Me.nombre
      
            Case Is = "calle"
            myField.Value = Me.Calle
        
        Case Else
        
                If myField.Name = Me.Deleg Then
                myField.IsHidden = False
                End If
        
               
         End Select
        
        
    Next myField
  
  
  Set AcroExchPDDoc = avDoc.GetPDDoc
bOK = AcroExchPDDoc.Save(1, Application.CurrentProject.Path & "\Cliente" & Me.[nº col] & "_" & Me.APELLIDO_1 & " " & Me.APELLIDO_2 & ".pdf")
    
    avDoc.Close (1)
    Set avDoc = Nothing
    Set formApp = Nothing
    Set acroForm = Nothing
    Set AcroExchPDDoc = Nothing

'---------------------------------------
como puedes ver es basicamente lo mismo que en el alnterior solo que en el primero iba dirigido a rellenar un par de campos
'------------------------------------
a partir de aqui hacer con el archivo rellenado lo que quieras: 
firmarlo digitalmente, enviarlo por mail o lo que quieras añadiendo las correspondientes instrucciones
'-----------------------------------
Te recomiendo que si vas a mandar por mail  u son muchos lo hagas entandas pequeñas si no quieres que los servidores de correo lo interpreten como spam. tardarás mas pero llegaran todos, a mi la primera vez se paro en sesenta y me costó saber porqué.

Un saludo y que te pueda resolver el asunto.




-------------
Gracias a todos de antemano


Publicado por: Nomada
Fecha de publicación: 16/Abril/2021 a las 20:27
Mounir he probado la demo theDBguyPDFDemoV1.1 que descargue desde el enlace que puso Xavi, y es la que comento que no me funciona.
También descargué de la misma págin ala demo theDBguyPDFFormFieldsDemoV1.0, pero no la he probado.
Acilu55, el caso es que los formularios en pdf ya están creados, pues pertenecen a las distintas administraciones. Lo que pretendo es usar esos formularios que ya tienen sus campos, para rellenarlos con el contenido de los campos de access.

Seguiré probando gracias


Publicado por: Nomada
Fecha de publicación: 19/Abril/2021 a las 06:42
Muchas gracias a todos.
De momento seguiré usando la imagen del formulario en Word con sus campos.
Este hilo se puede cerrar satisfactoriamente.
Saludos.



Imprimir página | Cerrar ventana