Fusionar datos FDF en un archivo PDF usando PHP
xfdf (4)
Hay otra forma en el día que no usa passthru ni pdftk, sino solo un script hecho en 2004 pero que todavía funciona bien: forge_fdf
te ayuda a construir un fdf que puedes incorporar de forma conjunta en tu pdf, significa que
Guarde esto en un archivo php, digamos generatePdf.php
require_once(''forge_fdf.php'');
// leave this blank if we''re associating the FDF w/ the PDF via URL
$pdf_form_url= "";
// default data; these two arrays must ultimately list all of the fields
// you desire to alter, even if you just want to set the ''hidden'' flag;
//
//
$fdf_data_names= array(); // none of these in this example
$fdf_data_strings= array(); // none of these in this example
$fdf_data_strings[''email'']=mb_strtolower($row_delivreur[''firstname'']).''.''.mb_strtolower($row_delivreur[''lastname'']).''@gmail.com'';
$fields_hidden= array();
$fields_readonly= array();
// set this to retry the previous state
$retry_b= false;
header( ''content-type: application/vnd.fdf'' );
echo forge_fdf( $pdf_form_url,
$fdf_data_strings,
$fdf_data_names,
$fields_hidden,
$fields_readonly );
Hacer un enlace a Pathtoyourpdf / nameofpdffile.pdf # FDF = generatePdf.php abrirá su archivo PDF en el navegador (alternativamente hay una forma de guardarlo en el disco, creo que recuerdo) y el campo de correo electrónico se completará con datos de MYSQL: mb_strtolower($row_delivreur[''firstname'']).''.''.mb_strtolower($row_delivreur[''lastname'']).''@gmail.com''
Funciona con casillas de verificación, botón de opción, ... Se abre bien en Firefox, tiene que probarse con otros navegadores.
Más información en PDF HACKS
¿Es posible fusionar datos FDF con un archivo PDF usando solo PHP? ¿O no hay otra opción que utilizar una herramienta de línea de comandos de terceros para lograr esto?
Si ese es el caso, ¿alguien puede señalarme en la dirección de uno?
Actualmente estoy enviando el archivo FDF al navegador con la esperanza de que redirija al usuario al PDF completo, pero para algunas personas ese no es el caso. El contenido de FDF se está enviando a la pantalla, aunque estoy usando el encabezado (''Content-type: application / vnd.fdf'');
Para referencia futura, parece que no hay una manera confiable de hacerlo sin una aplicación de terceros. Pdftk ( http://www.accesspdf.com/pdftk/ ) terminó siendo mi solución.
Primero genere el archivo FDF como antes, y luego lo fusioné en mi archivo PDF usando el siguiente código PHP
header(''Content-type: application/pdf'');
header(''Content-Disposition: attachment; filename="Download.pdf"'');
passthru("pdftk file.pdf fill_form data.fdf output - ");
exit;
Fue mucho más fácil de lo que pensé que sería. Esto elimina instantáneamente la necesidad de hackear con encabezados y extensiones de archivos para asegurar que todos los navegadores manejen un FDF correctamente, ya que simplemente hace que el navegador descargue el archivo PDF.
Si desea que el archivo de salida PDF ya no sea editable, use
passthru("pdftk file.pdf fill_form data.fdf output - flatten");
Disculpas si esto es algo básico, solo pensé en poner todo en un solo lugar para que la gente no sufriera el dolor de cabeza que sufrí.
NB Si su variable PATH no está configurada, necesitará usar la ruta completa a pdftk, es decir,
passthru("/usr/local/bin/pdftk file.pdf fill_form data.fdf output - flatten");
de lejos, la forma más fácil que he encontrado para instalar pdftk en centos:
Instale el repositorio de rpmforge - http://wiki.centos.org/AdditionalResources/Repositories/RPMForge#head-5aabf02717d5b6b12d47edbc5811404998926a1b
entonces
yum instalar pdftk
¡y eso es!
http://www.setasign.de/products/pdf-php-solutions/fpdi/demos/concatenate-fake/
Esto funciona, las clases de descarga están vinculadas desde el sitio web también,
No requiere ningún comando passthru / exec ni extensiones adicionales.
Editado para decir, esto no funciona con las versiones más recientes de PDF 1.5+, revertido a PDFTK, pero trabaja con todos los pdfs usando el comando ''exec''.