Stefan: PDF per PHP um Seite erweitern?

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!

  1. Hallo,

    http://framework.zend.com/manual/de/zend.pdf.html

    oder bei PEAR gucken.

    Gruß

    jobo

  2. 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

    1. WOW!
      Danke, das ist das, was ich gesucht habe!!!
      THX

      1. 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