FiveTech Support Forums

FiveWin / Harbour / xBase community
Board index FiveWin para Harbour/xHarbour ACTIVEX PDF y fusión de datos
Posts: 610
Joined: Wed Oct 19, 2005 08:20 PM
ACTIVEX PDF y fusión de datos
Posted: Sat Nov 11, 2006 09:46 AM

Con ACTIVEX PDF logro visualizar por pantalla un formulario PDF con campos editables para rellenar. Sería un gran avance poder rellenar esos campos automáticamente con los datos contenidos en un registro de una BD. ¿Es posible esto? Alguien sabe cómo se hace o existe documentación al respecto?

Un saludo,
Manuel Aranda


FWH 2.8 Octubre/2006

Un saludo,

Manuel



xH 1.2.3, FWH 23.07 32 bits, BC++ 7.4, xVerce CW 1.0, PellesC
Posts: 229
Joined: Sat Mar 18, 2006 03:42 PM
ACTIVEX PDF y fusión de datos
Posted: Sat Nov 11, 2006 06:08 PM

Hola Manuel

No sé exactamente cómo funciona el activeX PDF, pero te puedo dar una pista que espero te funcione.

Como sabes al crear el PDF con campos editables se crea un archivo similar de extensión FDF (Forms Data Format) qe es el que guarda los nombres de los campos y su contenido. Entonces el truco está en acceder a este archivo con funciones de bajo nivel y modificar sus datos. Y eso sería todo.

A continuación te muestro el código que hace esto pero en PHP (lo encontré en Internet), con el que te puedes guiar, pasarlo a Harbour y probar:

<?php
// -----------------------------------------------------------------------------------------------
// Class: PHP2PDF
// Subject: Incrustar varibles de PHP en formularios PDF
// Mail: arturo@pinrel.com
// Version: 1.0
// Update: 2004-01-20
// -----------------------------------------------------------------------------------------------

class PHP2PDF
{
var $matriz;

function Push ($campo, $valor)
{
    $this-&gt;matriz[$campo]=$valor;
}

function Make ($FicheroPDF, $FicheroFDF)
{
    $buscar = array('\\', '(', ')');
    $reemplazar = array('\\\\', '\(', '\)');
    $fdf = "%FDF-1.2\n%‚„œ”\n1 0 obj \n&lt;&lt; /FDF &lt;&lt; /Fields [\n"; 
    foreach ($this-&gt;matriz as $campo =&gt; $valor)
    {
        $campo_bueno = str_replace($buscar, $reemplazar, $campo);
        $valor_bueno = str_replace($buscar, $reemplazar, $valor);
        $fdf .= "&lt;&lt; /V ($valor_bueno)/T ($campo_bueno) &gt;&gt; \n";
    }
    $fdf .= "]\n/F ($FicheroPDF) &gt;&gt; &gt;&gt;\nendobj\ntrailer\n&lt;&lt;\n/Root 1 0 R \n\n&gt;&gt;\n%%EOF";
    // Genera el Fichero de Intercambio de datos FDF
    $f_out=fopen($FicheroFDF,"w");
    fputs($f_out, $fdf);
    fclose($f_out);
    // Salta al fichero PDF
    header("Location:$FicheroPDF");
}

} // Fin de la Clase
?>

Espero que te sirva el dato . También me interesa el tema.
Suerte y un Saludo

Marcelo Jingo

Marcelo Jingo
Posts: 610
Joined: Wed Oct 19, 2005 08:20 PM
ACTIVEX PDF y fusión de datos
Posted: Sat Nov 11, 2006 06:17 PM

Gracias, sjingo

Ya es algo por donde empezar. Me pongo manos a la obra y ya contaré.

Un saludo,
Manuel

Un saludo,

Manuel



xH 1.2.3, FWH 23.07 32 bits, BC++ 7.4, xVerce CW 1.0, PellesC
Posts: 610
Joined: Wed Oct 19, 2005 08:20 PM
ACTIVEX PDF y fusión de datos
Posted: Sun Nov 12, 2006 09:00 PM
Bueno, por si a alguno de Vds. le interesa: He conseguido, ¡¡¡¡ por fín !!! fusionar un fichero PDF con un registro de la base de datos. Es tan simple como enviar a un fichero XML los datos de que se trate. El fichero XML tiene que tener el mismo nombre que el fichero PDF y contener los mismos nombres de campos que el fichero PDF. Después se ejecuta con WinExec el ejecutable de Acrobat seguido del fichero XML, y se produce la magia.

Así que tenemos PRUEBA.PDF
PRUEBA.XML

Local cFicheroXML:= 'C:\MAR\pdf\Prueba.pdf"
Local cLugarAcrobat:="C:\Archivos de programa\Adobe\Acrobat 7.0\Reader\AcroRd32.exe"
 Winexec(cLugarAcrobat+" "+cFicheroXML)


El fichero XML queda como sigue
<?xml version='1.0' encoding='ISO-8859-1' ?>
<xfdf xmlns='http://ns.adobe.com/xfdf/' xml:space='preserve'>
<fields>
<field name='nif'>
<value> 23787664Y</value>
</field>
<field name='sexo'>
<value>H</value>
</field>
<field name='apellido1'>
<value>JIMENEZ         </value>
</field>
<field name='apellido2'>
<value>GONZALEZ       </value>
</field>
<field name='nombre'>
<value>ANTONIO MANUEL      </value>
</field>
<field name='provincia'>
<value>GRANADA        </value>
</field>
<field name='telefono'>
<value>958824464</value>
</field>
</fields>
<f href='C:\MAR\pdf\Prueba.pdf'/>
</xfdf>


Eso sí, lo que no he conseguido es ejecutarlo desde ACTIVEX y que no reconoce la extensión XML. Si se lanza con el fichero PDF no recoge los datos del XML.

Un saludo,
Manuel Aranda
Un saludo,

Manuel



xH 1.2.3, FWH 23.07 32 bits, BC++ 7.4, xVerce CW 1.0, PellesC
Posts: 1074
Joined: Fri Oct 07, 2005 01:56 PM
ACTIVEX PDF y fusión de datos
Posted: Mon Nov 13, 2006 12:32 PM

Hola Manuel

Se ve interesante

Podrias colocar un ejemplo pequeño funcional para poder mejor entender

Saludos
Patricio

Saludos
Patricio

__________________________________________________________________
Version: Harbour 3.2.0dev (r1307082134),Compiler: Borland C++ 5.8.2 (32-bit)
PCode version: 0.3, FWH 13.2
http://www.sialm.cl
Posts: 731
Joined: Fri Oct 07, 2005 07:42 AM
RE:
Posted: Thu Nov 16, 2006 11:10 AM

Creo que esto esta mal;
Local cFicheroXML:= 'C:\MAR\pdf\Prueba.pdf"

Deberia ser .XML , no ?

Por cierto, me gustaria saber como consigues crear un PDF con campos editables....

Saludos

Rafa Carmona ( rafa.thefullARROBAgmail.com___quitalineas__)
Posts: 610
Joined: Wed Oct 19, 2005 08:20 PM
Re: RE:
Posted: Thu Nov 16, 2006 12:53 PM
thefull wrote:Creo que esto esta mal;
Local cFicheroXML:= 'C:\MAR\pdf\Prueba.pdf"

Deberia ser .XML , no ?

Por cierto, me gustaria saber como consigues crear un PDF con campos editables....


Efectivamente, está mal, debe ser .XML.

Siento no poder ayudarte en cuanto a crear un PDF con campos editables, pues no lo sé. Hasta ahora lo que he hecho ha sido editar ficheros PDF ya creados con el Adobe Acrobat y cambiarles el nombre de los campos para que coincidan con los campos del fichero .XML

Un saludo,
Manuel
Un saludo,

Manuel



xH 1.2.3, FWH 23.07 32 bits, BC++ 7.4, xVerce CW 1.0, PellesC
Posts: 731
Joined: Fri Oct 07, 2005 07:42 AM
Re: RE:
Posted: Thu Nov 16, 2006 03:20 PM
Manuel Aranda wrote:
thefull wrote:Creo que esto esta mal;
Local cFicheroXML:= 'C:\MAR\pdf\Prueba.pdf"

Deberia ser .XML , no ?

Por cierto, me gustaria saber como consigues crear un PDF con campos editables....


Efectivamente, está mal, debe ser .XML.

Siento no poder ayudarte en cuanto a crear un PDF con campos editables, pues no lo sé. Hasta ahora lo que he hecho ha sido editar ficheros PDF ya creados con el Adobe Acrobat y cambiarles el nombre de los campos para que coincidan con los campos del fichero .XML

Un saludo,
Manuel

Ostras Manuel!!!
¿ Entonces que sentido tiene esto si no se puede crear uno un propio PDF :-) ? Quizas usar uno ya creado ...? Seria de utilidad poder experimentar más sobre ello. ¿ puedes enviarme por mail para poder experimentar ? Gracias
Saludos

Rafa Carmona ( rafa.thefullARROBAgmail.com___quitalineas__)
Posts: 731
Joined: Fri Oct 07, 2005 07:42 AM
Re: RE:
Posted: Thu Nov 16, 2006 04:18 PM

Por cierto Manuel, ¿ y si en vez de XML la extension le pones .XFDF ? Ahi quizás si que te funcione....

Saludos

Rafa Carmona ( rafa.thefullARROBAgmail.com___quitalineas__)
Posts: 564
Joined: Thu Oct 13, 2005 09:23 AM
ACTIVEX PDF y fusión de datos
Posted: Fri Nov 17, 2006 07:01 AM

Hola:
Para crear PDF con campos editables necesitas la versión más completa del Adobe Acrobat, creo que es la edición profesional.

Manuel, estaría bien que publicaras un ejemplo de lo que haces.

Saludos,

Posts: 610
Joined: Wed Oct 19, 2005 08:20 PM
ACTIVEX PDF y fusión de datos
Posted: Fri Nov 17, 2006 01:39 PM
En primer lugar, Acrobat Reader solo sirve para visualizar ficheros PDF. Si quieres modificarlos y/o editar campos necesitas Adobe Acrobat, con la herramienta Form se crean/modifican los campos.
El ejemplo es tan sencillo como esto:
Local cFicheroXML:= "nomina.xml" 
Local cLugarAcrobat:="C:\Archivos de programa\Adobe\Acrobat 7.0\Reader\AcroRd32.exe" 
 Winexec(cLugarAcrobat+" "+cFicheroXML)


Aquí teneis los ficheros:
http://hyperupload.com/download/029aaf6 ... a.pdf.html
http://hyperupload.com/download/02339bd ... a.xml.html

Saludos,
Manuel
Un saludo,

Manuel



xH 1.2.3, FWH 23.07 32 bits, BC++ 7.4, xVerce CW 1.0, PellesC
Posts: 610
Joined: Wed Oct 19, 2005 08:20 PM
Re: RE:
Posted: Sat Nov 18, 2006 12:45 PM
thefull wrote:Por cierto Manuel, ¿ y si en vez de XML la extension le pones .XFDF ? Ahi quizás si que te funcione....


Desde ACTIVEX no funciona ni con .XML y con .XFDF., solo con .PDF. Al menos hasta donde mis modestos conocimientos llegan.
Aquí adjunto un nuevo ejemplo más completo de un PDF bajado de la web de la DGT.
http://hyperupload.com/download/028d829 ... o.pdf.html
http://hyperupload.com/download/0245249 ... o.xml.html

Un saludo,
Manuel
Un saludo,

Manuel



xH 1.2.3, FWH 23.07 32 bits, BC++ 7.4, xVerce CW 1.0, PellesC
Posts: 729
Joined: Tue Oct 18, 2005 06:49 PM
Forma PDF - Llenar los campos con datos almacenados en DBF -
Posted: Fri Mar 16, 2007 08:53 PM

Manuel,

Pudiste resolver como llenar los campos de una forma PDF con datos almacenados en un fichero DBF?

IF Yes
msginfo ("Podrias postear un ejemplo?")
ELSE
msginfo("Cual fue tu experiencia en este proyecto?"
ENDIF

Saludos

George

Posts: 610
Joined: Wed Oct 19, 2005 08:20 PM
Re: Forma PDF - Llenar los campos con datos almacenados en D
Posted: Sun Mar 18, 2007 05:25 PM
Claro que lo resolví y en los dos mensajes anteriores tienes los ejemplos.
Saludos,
Manuel

George wrote:Manuel,

Pudiste resolver como llenar los campos de una forma PDF con datos almacenados en un fichero DBF?

IF Yes
msginfo ("Podrias postear un ejemplo?")
ELSE
msginfo("Cual fue tu experiencia en este proyecto?"
ENDIF

Saludos

George
Un saludo,

Manuel



xH 1.2.3, FWH 23.07 32 bits, BC++ 7.4, xVerce CW 1.0, PellesC
Posts: 729
Joined: Tue Oct 18, 2005 06:49 PM
ACTIVEX PDF y fusión de datos
Posted: Sun Mar 18, 2007 05:45 PM

Manuel,

La razon por la que te pregunte es porque al tratar de bajar los ejemplos dice "file not available".

Si fueras tan amable de subirlo de nuevo

Saludos

George