PDF per PHP um Seite erweitern?
Stefan
- php
Hallo zusammen,
ich bekomme von unseren Herstellern PDFs die ich unseren Kunden zum automatisch bei den Artikeln zum Download anbiete. Nun würde ich gerne bei jedem PDF automatisch vorne eine "Titelseite" mit unserem Logo und einem kurzen Text anhängen....
gibt es hierzu evtl irgendwelchen hilfreichen tipps/Tricks?
Danke schonmal!
Moin!
Hallo zusammen,
ich bekomme von unseren Herstellern PDFs die ich unseren Kunden zum automatisch bei den Artikeln zum Download anbiete. Nun würde ich gerne bei jedem PDF automatisch vorne eine "Titelseite" mit unserem Logo und einem kurzen Text anhängen....
Linux?
Du kannst, alternativ zum den in PHP enthalten oder dazu ladbaren PHP-Bibliotheken auch Linux-Tools benutzen. Das PDF-Toolkit wäre hier Mittel der Wahl, muss aber ebenfalls installiert werden.
<?php
$vorblatt = 'vorblatt.pdf'; //Vorblatt
$document = 'document.pdf'; //Dokument
$newFile = `mktemp`; // Wir brauchen eine temporäre Datei
$shell = `pdftk $vorblatt $document cat output $newFile`; // PDFs verbinden
header('Content-type: application/pdf');
readfile($newFile); // PDF senden
$shell = `rm $newFile"; // temporäre Datei löschen
?>
Probleme werden sich (in jedem Fall) ergeben, wenn die hoch geladenen Dokumente verschlüsselt und/oder geschützt sind. Dafür kannst Du mit pdftk auch Passwörter und Rechte setzen.
Beachte die Backticks (`), mehr Infos mit man pdftk oder in den pdftk-Beispielen.
MFFG (Mit freundlich- friedfertigem Grinsen)
fastix
WOW!
Danke, das ist das, was ich gesucht habe!!!
THX
Moin!
WOW!
Danke, das ist das, was ich gesucht habe!!!
Noch nicht ganz. Es geht nämlich ohne temporäre Datei, zudem sind ein paar Fehler abzufangen.
<?php
// Main
$vorblatt = 'vorblatt.pdf'; //Vorblatt
FileCheck($vorblatt);
$document = 'document.pdf'; //Dokument
FileCheck($document);
header('Content-type: application/pdf'); // Header senden
header('Content-Disposition: attachment; filename="' . document.pdf . '"'); // Header für Dateiname zum Download
passthru ("pdftk \"$vorblatt\" \"$document\" cat output -"); // PDFs verbinden und senden
exit; // end Main
function FileCheck($f) {
if (! is_file($name)) { // Gibt es die Datei nicht?
die ('Fatal: Die Datei ' . htmlentities($name) . ' existiert nicht!');
}
if (! is_readable($name)) { // Ist die Datei nicht lesbar?
die ('Fatal: Die Datei ' . htmlentities($name) . ' kann nicht gelesen werden!');
}
return true;
}
?>
Kleines Problem: Tritt dann noch ein Fehler auf, so wird Folgendes gesendet.
Error: Failed to open PDF file:
gibtsnicht.pdf
Errors encountered. No output created.
Done. Input errors, so no output created.
gesendet. Ich habe nicht getestet, was das Plugin dann macht. Wird das "Dokument" gespeichert, dann steht wohl der Text drin... Klar könnte man das theoretisch puffern und den Puffer prüfen, aber dann hat man möglicherweise das Problem, dass in diesen Puffer ein paar Megabyte zuviel geschrieben werden.
Der präsentierte Code ist ungetestet und kann Fehler enthalten.
MFFG (Mit freundlich- friedfertigem Grinsen)
fastix