2009-09-07 8 views
20

Ist es möglich, FDF-Daten mit einer PDF-Datei mit PHP allein zu verbinden? Oder gibt es keine andere Möglichkeit, als ein Befehlszeilenprogramm eines anderen Herstellers zu verwenden?FDF-Daten mit PHP in eine PDF-Datei einbinden

Wenn das der Fall ist, kann mir jemand in Richtung eines zeigen?

Ich gebe derzeit die FDF-Datei an den Browser in der Hoffnung, dass es den Benutzer auf das ausgefüllte PDF umleiten wird, aber für einige Leute ist das nicht der Fall. Der FDF-Inhalt wird auf dem Bildschirm ausgegeben, obwohl ich Header verwende ('Content-type: application/vnd.fdf');

Antwort

30

Für zukünftige Referenz sieht es so aus, als ob es keine zuverlässige Möglichkeit gibt, es ohne eine 3rd-Party-App zu tun. Pdftk (http://www.accesspdf.com/pdftk/) war meine Lösung.

I erzeugt zuerst die FDF nach wie vor Datei, und fusionierte sie dann in meine PDF-Datei den folgenden PHP-Code mit

header('Content-type: application/pdf'); 
header('Content-Disposition: attachment; filename="Download.pdf"'); 
passthru("pdftk file.pdf fill_form data.fdf output - "); 
exit; 

Es war viel einfacher, als ich dachte, es wäre. Auf diese Weise müssen Sie nicht mehr mit Headern und Dateierweiterungen herumhacken, um sicherzustellen, dass alle Browser ein FDF ordnungsgemäß verarbeiten, da der Browser die PDF-Datei einfach herunterladen muss.

Wenn Sie die PDF-Ausgabedatei wollen nicht mehr bearbeitet werden, verwenden

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

Entschuldigt, wenn diese grundlegende Dinge, nur dachte ich, es an einem Ort setzen würde, damit die Leute nicht gehen durch die Kopfschmerzen, die ich ertragen musste.

N.B. Wenn Ihre PATH-Variable nicht gesetzt ist, müssen Sie den vollständigen Pfad verwenden, dh

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

ich das jetzt getan haben, dank – James

+1

Wow, hat mir sehr geholfen! – Strae

+2

Es sollte beachtet werden, dass 'fill_form' auch mit XFDF-Daten arbeitet. Wenn Sie eine Kombination aus bearbeitbaren und schreibgeschützten Feldern in der resultierenden PDF-Datei wünschen, legen Sie die Eigenschaft "schreibgeschützt" für die Felder fest, die beim Generieren der PDF-Datei ausgefüllt werden sollen. Schreibgeschützte Felder werden von PDFTK ausgefüllt, können aber vom Endbenutzer nicht bearbeitet werden. – Kenaniah

3

Es gibt eine andere Art und Weise zu Tag, das nicht passthru noch pdftk verwenden, aber nur im Jahr 2004 Skript aber arbeitet noch gut: forge_fdf

es Ihnen eine fdf zu bauen hilft, die Sie straithly in Ihrem pdf incoporate können, bedeutet, dass Sie

Speichern Sie dies in einer PHP-Datei, sagen wir 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); 

Einen Link zu Pathtoyourpdf/nameofpdffile.pdf # FDF = generatePdf.php wird Ihre PDF-Datei im Browser öffnen (alternativ gibt es eine Möglichkeit, es auf die Festplatte zu speichern, ich glaube, ich erinnere mich) und das Feld E-Mail wird mit Daten von MYSQL gefüllt: mb_strtolower($row_delivreur['firstname']).'.'.mb_strtolower($row_delivreur['lastname']).'@gmail.com'

Es funktioniert mit Checkboxen, Radio-Button, ... Es öffnet sich gut in Firefox, es muss mit anderen Browsern getestet werden.

Mehr Infos auf PDF HACKS

+0

forge_fdf für PHP wird auch von PDF Labs (die Schöpfer von Pdftk) geschrieben, glaube ich. – BMiner

Verwandte Themen