Ankündigung

Einklappen
Keine Ankündigung bisher.

pdf erzeugen und als anhang versenden

Einklappen

Neue Werbung 2019

Einklappen
X
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • pdf erzeugen und als anhang versenden

    Hallo
    Ich habe mir ein Script geschrieben, das ein pdf erzeugt und dann in eine Datei schreibt. Eine andere Version öffnet das pdf sofort. Das klappt auch alles.
    Jetzt möchte ich, dass nach der pdf Erzeugung das ganze als Mailanhang versendet wird.
    Nach den ganzen pdf Anweisungen im Script geht aber jeweils gar nichts mehr....
    Kein einfaches mail, nicht einmal ein echo"Hallo Welt";

    Ich habe keine Ahnung wieso.....
    Weiss wer weiter?

    Gruss Semi

  • #2
    die glaskugel is leider mittagspause, da wirste schon paar mehr infos etc
    rüber rücken müssen.

    Kommentar


    • #3
      Ja, klar...

      Hier der Code:

      <?php

      $pdf = pdf_new();
      pdf_open_file($pdf, "leer.pdf");
      pdf_set_info($pdf, "Author","Max Meier");
      pdf_set_info($pdf, "Title","Rechnung");
      pdf_set_info($pdf, "Creator", "max@moritz.com");
      pdf_begin_page($pdf, 595, 842);

      $pdfimage = pdf_open_image_file($pdf, "gif", "bilder/logo.gif");
      pdf_place_image($pdf, $pdfimage, 420, 760, 0.5);

      $font = pdf_findfont($pdf, 'Helvetica','host',0);
      pdf_setfont($pdf,$font,10.0);
      pdf_show_xy($pdf,'abcdefg ',20,810);

      //close it up
      pdf_end_page($pdf);
      pdf_set_parameter($pdf,"openaction","fitpage");
      pdf_close($pdf);

      $data = pdf_get_buffer($pdf);
      $len = strlen($data);
      header('Content-type: application/pdf');
      header('Content-Length:$len');
      header('Content-disposition: inline; filename=Rechnung.pdf');

      $handle = fopen("leer.pdf", "a");
      fwrite($handle, $data);
      fclose($handle);

      pdf_delete($pdf);

      echo "Hallo Welt";

      ?>

      Mit den ganzen Headern habe ich rumexperimentiert, komme aber nicht zum Ziel

      Semi

      Kommentar


      • #4
        durch den content-type wirste da auch keine echo-ausgabe zu sehen kriegen.
        wenn du anstatt des echo's ein mail() platzierst sollte das eigentlich reibungs
        los laufen

        Kommentar


        • #5
          Danke für den Tip mit dem header. Doch ich blick nicht durch. Email läuft korrekt auf dem Server. Empfänger stimmt. Trotzdem passiert einfach nichts!
          ....
          ...
          ....
          $data = pdf_get_buffer($pdf);
          $len = strlen($data);
          header('Content-type: application/pdf');
          header('Content-Length:$len');
          header('Content-disposition: inline; filename=Rechnung.pdf');

          $handle = fopen("leer.pdf", "a");
          fwrite($handle, $data);
          fclose($handle);

          pdf_delete($pdf);

          $an = "xy@domain.com";
          $betreff = "Der Betreff";
          $text = "Der Text";

          mail($an,$betreff,$text);

          Kommentar


          • #6
            was soll auch weiteres passieren? du generierst das pdf und speicherst es
            in ne datei und verschickst ne email .. du gibst aber nirgends das pdf per
            pdf_*() wieder aus .. oder überseh ich da was?

            Kommentar


            • #7
              Ich wollte damit zeigen, dass nach dem pdf Abschnitt nicht einmal eine ganz normale, einfache mail versendet wird.
              Solange das nicht klappt, möchte ich mir noch gar nicht den Kopf über MIME u.s.w. zerbrechen :wink:

              Semi

              Kommentar


              • #8
                ah ok sorry, ich hab verstanden email läuft korrekt (vom) server .. wird
                also verschickt. . hm, logfiles gecheckt, wenn du zugriff hast? error_reporting()
                auf E_ALL gestellt?

                ~ edit ~

                nein @ nachfolgeposter, tust du nicht. aber problem in diesem fall ist erst mal
                dass er die mail überhaupt nicht verschickt, nicht mal ohne anhang!

                Kommentar


                • #9
                  aber laut deinem mail() schickst du die datei gar nicht im anhang mit, oder seh ich das falsch?

                  Kommentar


                  • #10
                    Ein Tipp:

                    phpMailer von http://phpmailer.sourceforge.net/
                    Ein Kurzanleitung dazu: http://www.phpforum.de/forum/phpforu...092838981.html
                    Gruß
                    phpfan

                    Kommentar


                    • #11
                      Hallo
                      Ich habe mir jetzt mal local eingerrichtet, dass ich die Error Logs angezeigt kriege.
                      (Bei der Gelegenheit auch gleich bemerkt, dass mein Hoster, bei dem das ganze dann mal liegen sollte, die Pdflib gar nicht installiert hat. Naja, wollte sowieso wechseln...)

                      Also, der Log Eintrag:

                      [Wed Aug 18 16:32:03 2004] [error] PHP Fatal error: PDFlib error [1052] PDF_get_buffer: Don't fetch buffer contents when writing to file in /Users/bruno/Sites/lunula/pdf.php on line 22

                      Toll, aber wie soll ich dass denn machen, ohne den "Buffer zu fetchen"?
                      Oder sollte ich irgendwas im Apache oder der php.ini ändern?

                      Mit "error_reporting() auf E_ALL gestellt?" hast Du, Stef, mich kalt erwischt!
                      Wo mache ich denn das?
                      PhpMailer schaue ich mir gleich an! Scheint interessant zu sein.

                      Vielen dank für Eure Hilfe.
                      Gruss
                      Semi

                      Kommentar


                      • #12
                        Mit "error_reporting() auf E_ALL gestellt?" hast Du, Stef, mich kalt erwischt!
                        Wo mache ich denn das?
                        PhpMailer schaue ich mir gleich an! Scheint interessant zu sein.
                        Am anfang des scripts:
                        PHP-Code:
                        <?php
                            error_reporting
                        (E_ALL);
                        // dein script
                        ?>

                        Kommentar


                        • #13
                          einfach in die Datei einfügen:
                          PHP-Code:
                          error_reporting(E_ALL); 
                          am besten in jede Datei, die du aufrufst...


                          edit: da war jmd. schneller...

                          Kommentar


                          • #14
                            In der php.ini ist Fehler_reporting so eingestellt.
                            Aber es werden keine Fehler im Browser Fenster angezeigt...

                            Semi

                            Kommentar


                            • #15
                              Hallo
                              Ich habe die Lösung gefunden! Dank dem Error_log im Apache.
                              Ich soll ja den "Buffer nicht fetchen".
                              Hier das Script, vielleicht hilft es jemandem weiter...

                              <?php
                              error_reporting(E_ALL);

                              $pdf = pdf_new();
                              pdf_open_file($pdf, "leer.pdf"); //hier wird ja das schon vorhandene "leer.pfp" geöffnet
                              pdf_set_info($pdf, "Author","Max Meier");
                              pdf_set_info($pdf, "Title","Rechnung");
                              pdf_set_info($pdf, "Creator", "max@moritz.com");
                              pdf_begin_page($pdf, 595, 842);

                              $pdfimage = pdf_open_image_file($pdf, "gif", "bilder/logo.gif");
                              pdf_place_image($pdf, $pdfimage, 420, 760, 0.5);

                              $font = pdf_findfont($pdf, 'Helvetica','host',0);
                              pdf_setfont($pdf,$font,10.0);
                              pdf_show_xy($pdf,'Der Text im pdf... ',20,810);

                              //close it up
                              pdf_end_page($pdf);
                              pdf_set_parameter($pdf,"openaction","fitpage");
                              pdf_close($pdf);

                              //$data = pdf_get_buffer($pdf); brauchts in diesem Fall nicht
                              //$len = strlen($data);brauchts in diesem Fall nicht
                              //header('Content-type: application/pdf');
                              header('Content-Length:$len');
                              header('Content-disposition: inline; filename=Rechnung.pdf');

                              $handle = fopen("leer.pdf", "a");
                              fwrite($handle, "leer.php");
                              fclose($handle);

                              pdf_delete($pdf);

                              echo "Hallo Welt";

                              $an = "xy@domain.com";
                              $betreff = "Der Betreff";
                              $text = "Der Text";

                              mail($an,$betreff,$text);
                              ?>

                              danke an alle!!

                              Gruss Semi

                              Kommentar

                              Lädt...
                              X