2009-09-07 18 views
20

¿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?Fusionar datos FDF en un archivo PDF usando PHP

Si ese es el caso, ¿alguien puede señalarme en la dirección de uno?

Actualmente estoy entregando el archivo FDF al navegador con la esperanza de que redirija al usuario al PDF lleno, 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');

Respuesta

30

Para futuras referencias, 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.

primera vez generado el archivo FDF como antes, y luego se fusionaron en mi archivo PDF utilizando 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; 

Era mucho más fácil de lo que pensaba 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 PDF de salida a no ser editable, utilice

passthru("pdftk file.pdf fill_form data.fdf output - flatten"); 

Disculpas si esto es lo básico, sólo pensé que había puesto todo en un solo lugar para que la gente no va a través del dolor de cabeza que soporté.

N.B. Si la variable PATH no está establecido, tendrá que utilizar la ruta completa a PDFTK es decir

passthru("/usr/local/bin/pdftk file.pdf fill_form data.fdf output - flatten"); 
+0

que han hecho que ahora, gracias – James

+1

Wow, me han ayudado mucho! – Strae

+2

Debe tenerse en cuenta que 'fill_form' también funciona con datos de XFDF. Si desea una combinación de campos editables y de solo lectura en su PDF resultante, establezca la propiedad "solo lectura" para los campos que desea rellenar cuando genera el PDF. Los campos de solo lectura serán completados por PDFTK, pero el usuario final no los podrá editar. – Kenaniah

3

Hay otra manera de día en el que no se utiliza de tránsito ni pdftk pero sólo un script hecho en 2004, pero sigue trabajando así: forge_fdf

que le ayuda a construir un FDF que puede incoporate straithly en su pdf, se significa que

Guárdelo 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 se abrirá el archivo PDF en el navegador (o bien hay una manera de guardarlo en el disco creo que recuerdo) y el campo de correo electrónico se llenará de datos de MySQL: mb_strtolower($row_delivreur['firstname']).'.'.mb_strtolower($row_delivreur['lastname']).'@gmail.com'

funciona con casillas de verificación, botón de radio, ... abre bien en Firefox, que tiene que ser probado con otros navegadores.

Más informaciones sobre PDF HACKS

+0

forge_fdf para PHP también está escrito por PDF Labs (los creadores de Pdftk), creo. – BMiner

Cuestiones relacionadas