ACTIVEX PDF y fusión de datos
- Manuel Aranda
- Posts: 561
- Joined: Wed Oct 19, 2005 8:20 pm
- Location: España
ACTIVEX PDF y fusión de datos
Con ACTIVEX PDF logro visualizar por pantalla un formulario PDF con campos editables para rellenar. Sería un gran avance poder rellenar _ 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 Aranda
-------------------------------------------------
FWH 2.8 Octubre/2006
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 _ 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->matriz[$campo]=$valor;
}
function Make ($FicheroPDF, $FicheroFDF)
{
$buscar = array('\\', '(', ')');
$reemplazar = array('\\\\', '\(', '\)');
$fdf = "%FDF-1.2\n%‚„œ”\n1 0 obj \n<< /FDF << /Fields [\n";
foreach ($this->matriz as $campo => $valor)
{
$campo_bueno = str_replace($buscar, $reemplazar, $campo);
$valor_bueno = str_replace($buscar, $reemplazar, $valor);
$fdf .= "<< /V ($valor_bueno)/T ($campo_bueno) >> \n";
}
$fdf .= "]\n/F ($FicheroPDF) >> >>\nendobj\ntrailer\n<<\n/Root 1 0 R \n\n>>\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
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 _ 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->matriz[$campo]=$valor;
}
function Make ($FicheroPDF, $FicheroFDF)
{
$buscar = array('\\', '(', ')');
$reemplazar = array('\\\\', '\(', '\)');
$fdf = "%FDF-1.2\n%‚„œ”\n1 0 obj \n<< /FDF << /Fields [\n";
foreach ($this->matriz as $campo => $valor)
{
$campo_bueno = str_replace($buscar, $reemplazar, $campo);
$valor_bueno = str_replace($buscar, $reemplazar, $valor);
$fdf .= "<< /V ($valor_bueno)/T ($campo_bueno) >> \n";
}
$fdf .= "]\n/F ($FicheroPDF) >> >>\nendobj\ntrailer\n<<\n/Root 1 0 R \n\n>>\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
Last edited by sjingo on Sat Nov 11, 2006 6:46 pm, edited 3 times in total.
- Manuel Aranda
- Posts: 561
- Joined: Wed Oct 19, 2005 8:20 pm
- Location: España
- Manuel Aranda
- Posts: 561
- Joined: Wed Oct 19, 2005 8:20 pm
- Location: España
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
El fichero XML queda como sigue
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
Así que tenemos PRUEBA.PDF
PRUEBA.XML
Code: Select all
Local cFicheroXML:= 'C:\MAR\pdf\Prueba.pdf"
Local cLugarAcrobat:="C:\Archivos de programa\Adobe\Acrobat 7.0\Reader\AcroRd32.exe"
Winexec(cLugarAcrobat+" "+cFicheroXML)
Code: Select all
<?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='_'>
<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>
Un saludo,
Manuel Aranda
- Patricio Avalos Aguirre
- Posts: 1028
- Joined: Fri Oct 07, 2005 1:56 pm
- Location: La Serena, Chile
- Contact:
RE:
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....
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__)
Rafa Carmona ( rafa.thefullARROBAgmail.com___quitalineas__)
- Manuel Aranda
- Posts: 561
- Joined: Wed Oct 19, 2005 8:20 pm
- Location: España
Re: RE:
Efectivamente, está mal, debe ser .XML.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....
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 _ para que coincidan con _ del fichero .XML
Un saludo,
Manuel
Re: RE:
Ostras Manuel!!!Manuel Aranda wrote:Efectivamente, está mal, debe ser .XML.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....
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 _ para que coincidan con _ del fichero .XML
Un saludo,
Manuel
¿ Entonces que sentido tiene esto si no se puede crear uno un propio PDF
![Wink ;-)](./images/smilies/icon_wink.gif)
Saludos
Rafa Carmona ( rafa.thefullARROBAgmail.com___quitalineas__)
Rafa Carmona ( rafa.thefullARROBAgmail.com___quitalineas__)
Re: RE:
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__)
Rafa Carmona ( rafa.thefullARROBAgmail.com___quitalineas__)
- José Luis Sánchez
- Posts: 484
- Joined: Thu Oct 13, 2005 9:23 am
- Location: Novelda - Alicante - España
- Contact:
- Manuel Aranda
- Posts: 561
- Joined: Wed Oct 19, 2005 8:20 pm
- Location: España
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 _.
El ejemplo es tan sencillo como esto:
Aquí teneis los ficheros:
http://hyperupload.com/download/029aaf6 ... a.pdf.html
http://hyperupload.com/download/02339bd ... a.xml.html
Saludos,
Manuel
El ejemplo es tan sencillo como esto:
Code: Select all
Local cFicheroXML:= "nomina.xml"
Local cLugarAcrobat:="C:\Archivos de programa\Adobe\Acrobat 7.0\Reader\AcroRd32.exe"
Winexec(cLugarAcrobat+" "+cFicheroXML)
http://hyperupload.com/download/029aaf6 ... a.pdf.html
http://hyperupload.com/download/02339bd ... a.xml.html
Saludos,
Manuel
- Manuel Aranda
- Posts: 561
- Joined: Wed Oct 19, 2005 8:20 pm
- Location: España
Re: RE:
Desde ACTIVEX no funciona ni con .XML y con .XFDF., solo con .PDF. Al menos hasta donde mis modestos conocimientos llegan.thefull wrote:Por cierto Manuel, ¿ y si en vez de XML la extension le pones .XFDF ? Ahi quizás si que te funcione....
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
Forma PDF - Llenar los campos con datos almacenados en DBF -
Manuel,
Pudiste resolver como llenar _ 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
Pudiste resolver como llenar _ 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
- Manuel Aranda
- Posts: 561
- Joined: Wed Oct 19, 2005 8:20 pm
- Location: España
Re: Forma PDF - Llenar los campos con datos almacenados en D
Claro que lo resolví y en los dos mensajes anteriores tienes los ejemplos.
Saludos,
Manuel
Saludos,
Manuel
George wrote:Manuel,
Pudiste resolver como llenar _ 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