FPDF: PDF in neuem Fenster öffnen

Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

  • FPDF: PDF in neuem Fenster öffnen

    Hallo Zusammen,

    ich habe mich heute auch mit FPDF beschäftigt...aus einem HTML-Formular kann man sich ein PDF erstellen. Das funktioniert soweit auch problemlos. Allerdings wird die PDF-Datei in dem Ordner erstellt, in dem sich die PHP-Skripte befinden.

    Gibt es einen Befehl, der das PDF-Dokument in einem neuen Fenster bzw. Tab öffnet?

    // Thema getrennt von pdf Datei mit PHP
  • Hallo,
    das deutsche Manual zur Output Funktion findest du hier: fpdf.de/funktionsreferenz/?funktion=Output

    Für dich ist der Parameter "i" wohl der richtige
    Sendet das Dokument als Datei an den Client (Browser). Sofern auf dem Client vorhanden, wird das PDF Dokument durch das Adobe Acrobat Reader Plugin des Browsers angezeigt. Der Name wird als Dateiname für den "Speichern unter" Dialog des Browser verwendet, sofern das Plugin nicht vorhanden ist bzw. explizit das Speichern der Datei angefordert wurde.

    Quellcode

    1. $pdf=new FPDF();
    2. $pdf->Open();
    3. [...]
    4. $pdf->Output("anzeigename.pdf", "I");
  • Ich habe ein kleines Problem mit der Hintergrund-Farbe einer Zelle.

    Quellcode

    1. $pdf->SetXY(10, 115);
    2. $pdf->SetFillColor(122,139,139);
    3. $pdf->cell(190, 6, 'Text', 1);


    Ich möchte den Hintergrund grau haben, aber irgendwie übernimmt er die Farbe nicht.

    Kann mir jemand sagen, was ich ändern müsste? :)
  • Ich denke mal, dass es daran liegt, dass du ein paar Parameter vergessen hast. Laut D0nut kommt nach text nämlich "border", welches für deinen Rahmen verantwortlich ist.

    Quellcode

    1. Cell(float w [, float h] [, string txt] [, mixed border] [, integer ln] [, string align] [, integer fill] [, mixed link])

    Du musst nach dem übergebenen Text noch "border", "ln" und "align" angeben. Erst dann kannst du angeben, ob deine Zelle mit einer Farbe gefüllt werden soll.
    Für dich sähe der Aufruf mit den default Werten so aus:

    Quellcode

    1. $pdf->cell(190, 6, 'Text', 0, 0, "L", 1);

    Hier wurde jetzt nichts andere gemacht, als die Default Werte noch einmal zu übergeben, die sowieso genommen würden, wenn du sie nicht extra angibst.
    Open Source --> Programmieren aus Leidenschaft :!:

    Ich stehe weder für privaten Support per PM noch über einen IM zur Verfügung. Danke.
  • Ich hätte noch eine Frage, bezüglich des Names vom PDF-Dokument. Zur Zeit ist der Name mit "dokument.pdf" im Quellcode festgelegt.

    Quellcode

    1. $pdf->Output('dokument.pdf', 'D');


    Nun soll das PDF so heißen, wie der in einem Formular zuvor eingetragene Name.

    Quellcode

    1. $pdf->Output('$_SESSION["name"].pdf', 'D');


    Leider geht das so nicht und ich bekomme die Meldung "...Invalid argument...".

    Könnt ihr mir dabei helfen, wie ich den Namen übergebe?
  • vince schrieb:

    $pdf->Output($_SESSION["name"].'.pdf', 'D');


    Klasse, damit geht es! Danke vince :) :thumbup:

    Ich möchte das PDF auch per Mail verschicken, dazu habe ich bislang auch immer den Namen fest angegeben.

    Quellcode

    1. $file = "dokument.pdf";


    Das möchte ich jetzt auch flexibel gestalten...

    Quellcode

    1. $file = $_SESSION["name"].".pdf";


    Könnte das so gehen? Ich habe jetzt keinen Mail-Server zum testen...
  • schön :)

    $file würde ja nur den Dateinamen enthalten.
    Du musst die Datei als Attachement anhängen.
    Ich würde dir raten eine Mail Klasse wie phpMailerzu nutzen, sonst wirds kompliziert mit dem Attachement.

    So könnte es mit phpMailer aussehen, wobei die meisten Paramter optional sind.

    Quellcode

    1. require('phpmailer/class.phpmailer.php');
    2. $mail = new PHPMailer();
    3. $mail->Host = "mail.peter-lustig.de"; // falls es nicht über localhost läuft
    4. $mail->CharSet = "utf-8"; // oder z.b ISO-8859-1 (latin1)
    5. $mail->IsHTML(true); // oder false für plaintext
    6. $mail->From = "deine@email.de";
    7. $mail->FromName = "Hans Wurst";
    8. $mail->AddAddress("ein@empfaenger.de");
    9. $mail->AddAddress("noch@ein-optionaler.de");
    10. $mail->AddBCC('was@auch-eimmer.de',);
    11. $mail->AddCC('wurst@salat.de');
    12. $mail->Subject = "Easy Coding r0ckt !";
    13. $mail->Body = "<h1>HTML Nachricht</h1>";
    14. $mail->AltBody = "Plaintextnachricht wenn kein HTML vom CLient unterstützt wird ...";
    15. $mail->AddAttachment($file,'Der Anhang-soll-so-heissen.pdf');
    16. if(!$mail->Send()){
    17. echo "Die Email konnte nicht gesendet werden";
    18. echo "Fehler: " . $mail->ErrorInfo;
    19. }else{
    20. echo "Die Email wurde versandt.";
    21. }
    Alles anzeigen



    oder du "quälst dich mit der Mail Funktion udn den Headern rum ;)
    de3.php.net/manual/de/function.mail.php

    Ein Beispiel auf php.net ist von akam vom 28-May-2008 03:55
  • Hallo,

    ich habe ein kleines Problem bei der Pfadangabe zum erstellen des PDF.

    Zur Zeit wird das PDF in dem Ordner erstellt, in dem sich auch die Skripte befinden.

    Quellcode

    1. $pdf->Output($_SESSION["name"].'.pdf', 'F');


    Ich möchte nun aber dort einen Ordner erstellen...in diesen sollen die PDFs erstellt werden.

    Jetzt stehe ich vor dem Problem, 'Output' um den Pfad zu erweitern.

    Quellcode

    1. $pdf->Output('Ordner',$_SESSION["name"].'.pdf', 'F');
  • Und wenn du es so machst:

    Quellcode

    1. copy($_SESSION["name"].".pdf","/foo/bar/".$_SESSION["name"].".pdf");
    2. unlink($_SESSION["name"].".pdf");

    Oder ist dir das zu "schmutzig"?
    Weil so wie es aussieht, interpretiert er den Namen den du übergibst wirklich nur als Namen. Und so kann man schlecht eine Datei namens "/foo/bar/datei.pdf" nennen, da sich dass dann mit den Pfadangaben überschneiden würde. Aber vielleicht belehrt mich ja noch jemand eines Besseren.
    Open Source --> Programmieren aus Leidenschaft :!:

    Ich stehe weder für privaten Support per PM noch über einen IM zur Verfügung. Danke.
  • Deadman44 schrieb:

    Und wenn du es so machst:

    Quellcode

    1. copy($_SESSION["name"].".pdf","/foo/bar/".$_SESSION["name"].".pdf");
    2. unlink($_SESSION["name"].".pdf");

    Oder ist dir das zu "schmutzig"?
    Weil so wie es aussieht, interpretiert er den Namen den du übergibst wirklich nur als Namen. Und so kann man schlecht eine Datei namens "/foo/bar/datei.pdf" nennen, da sich dass dann mit den Pfadangaben überschneiden würde. Aber vielleicht belehrt mich ja noch jemand eines Besseren.


    Das sieht interessant aus, verstehe ich aber nicht ganz. Wofür steht das

    Quellcode

    1. /foo/bar/
    . Ich nehme an, dass Du die Datei in den anderen Ordner kopierst und dann löscht?

    Rondrer schrieb:

    $pdf->Output('AbsoluterPfad/'.$_SESSION["name"].'.pdf', 'F');


    Das ist die Lösung! :)

    Jetzt wird das PDF in einem Ordner erstellt.

    Danke Rondrer und Deadman44 :thumbup:
  • Billie schrieb:

    Das sieht interessant aus, verstehe ich aber nicht ganz. Wofür steht das

    Quellcode

    1. copy($_SESSION["name"].".pdf","/foo/bar/".$_SESSION["name"].".pdf");
    2. unlink($_SESSION["name"].".pdf");


    . Ich nehme an, dass Du die Datei in den anderen Ordner kopierst und dann löscht?


    Ja so war das auch gemeint. Aber jetzt hast du ja die gewünschte Lösung für fpdf. Freut mich für dich :)
    Open Source --> Programmieren aus Leidenschaft :!:

    Ich stehe weder für privaten Support per PM noch über einen IM zur Verfügung. Danke.