Ankündigung

Einklappen
Keine Ankündigung bisher.

Variable übergeben

Einklappen

Neue Werbung 2019

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

  • Variable übergeben

    Ich will eine HTML Seite als pdf speichern. Diese Funktionalität ist implementiert und jetzt muss ich nur noch den aktuellen Inhalt des Browser in eine Variable speichern. Dies habe ich mit der ob_* Funktionen gemacht. Wenn jetzt jemand auf den Button 'Save as PDF' klickt, dann ruft dieser Button die pdf.php Datei auf. Diese braucht dann nur eine Variable $html2print und es speichert mir den html inhalt als pdf.

    Ich habe den html Inhalt gespeichert mit $contents = ob_get_contents(); und das scheint so auch zu funktionieren. Das ganze gebe ich beim Drücken des 'Save as PDF' als eine $_POST Variable mit und lese es dann in der pdf.php wieder aus. aber irgendwie scheint das nicht zu klappen

    Hat jemand eine Idee was los ist?
    Gibt es bei $_POST eine Beschränkung wie lange der Inhalt sein darf?

    Detailliere Eingaben gibt -> siehe weiter unten

  • #2
    Gibt es bei $_POST eine Beschränkung wie lange der Inhalt sein darf?
    Das sollte im Normalfall kein Problem sein...
    Steht aber auch in der .ini Datei: post_max_size

    aber irgendwie scheint das nicht zu klappen
    Gehts auch detailierter ?
    Signatur:
    PHP-Code:
    $s '0048656c6c6f20576f726c64';
    while(
    $i=substr($s=substr($s,2),0,2))echo"&#x00$i;"

    Kommentar


    • #3
      Du hast den HTML Code warscheinlich in ein Hidden-Input gepackt und die " im HTML Code stoppen vorzeitig dein value="" Attribut.

      Mehr als Raten können wir bei der sehr dürftigen Beschreibung nicht.

      Davon ab das es schon fragwürdig erscheint den kompletten Seitenquelltext via Post verschicken zu wollen.
      "Alles im Universum funktioniert, wenn du nur weißt wie du es anwenden musst".

      Kommentar


      • #4
        an deiner Stelle würd' ich den Inhalt der betreffenden HTML-Seite erst in dem Skript auslesen, in dem das PDF erzeugt wird.

        [MAN]file_get_contents[/MAN] oder eventuell [MAN]curl[/MAN], wenn POST-Variablen benötigt werden.

        Kommentar


        • #5
          Mittlerweile habe ich weiter gebastelt. Oben beginnt es folgendermassen:
          Code:
          <?php //Datei: recapAdmin.php
            ob_start();
          ?>
          und aufhören tut es mit
          Code:
          <?php 
                 $contents = ob_get_contents();
          ?>
          Dazwischen ist ein Gemisch aus PHP und HTML Code. Dort steht dann auch noch das:
          Code:
          		<form action="pdf.php" method="post">
          			<input type="hidden" name='test' value="<?php echo $contents ;?>">
          			<input name="pdf" type="submit" value="print">
          		</form>
          Das funktioniert jetzt aber leider sicher nicht, da die $contents Variable ja erst am Schluss mit $contents = ob_get_contents(); ihren Inhalt bekommt


          Zitat von DarkWarrior Beitrag anzeigen
          [MAN]file_get_contents[/MAN] oder eventuell [MAN]curl[/MAN], wenn POST-Variablen benötigt werden.
          Das geht leider nicht, da der Inhalt nicht immer der Gleiche ist. Sprich du kreuzt bei einer Bestellung ein paar Sachen an und wenn du mit file_get_contents den Inhalt holst, dann hast du eine "leere" Seite



          Zitat von Dark Guardian Beitrag anzeigen
          Du hast den HTML Code warscheinlich in ein Hidden-Input gepackt und die " im HTML Code stoppen vorzeitig dein value="" Attribut.

          Mehr als Raten können wir bei der sehr dürftigen Beschreibung nicht.

          Davon ab das es schon fragwürdig erscheint den kompletten Seitenquelltext via Post verschicken zu wollen.
          Stimmt, habe genau das Problem mit den " und deshalb verreist es mir nachher das ganze. Ich würde es gerne anders machen, aber leider weiss ich nie wie weiter


          Im Grossen und den Ganzen muss ich einfach die aktuelle Seite als pdf speichern. Einfachere Lösungen als meine sind herzlich willkommen

          Kommentar


          • #6
            Stimmt, habe genau das Problem mit den " und deshalb verreist es mir nachher das ganze. Ich würde es gerne anders machen, aber leider weiss ich nie wie weiter
            [man]htmlspecialchars[/man]

            Das funktioniert jetzt aber leider sicher nicht, da die $contents Variable ja erst am Schluss mit $contents = ob_get_contents(); ihren Inhalt bekommt
            Wie genau läuft, das ab, ich versteh deine Vorgehensweise nicht ganz...
            1. Daten iwo auslesen und verarbeiten
            2. OB an
            3. Deine PDF File generieren (für sowas gibts bestimmt schon fertige Klassen) (Bsp.: http://www.fpdf.org/)
            4. OB aus und den Inhalt davon holen
            5. Deine normale Seite, mit dem PDF-Speichern Button

            Wie genau ist dein Ablauf, stimmt der mit meiner Vermutung überein ?

            PHP-Code:
            $contents ob_get_contents(); 
            Beendest du das Output Buffering auch ?
            [man]ob_end_clean[/man]
            Signatur:
            PHP-Code:
            $s '0048656c6c6f20576f726c64';
            while(
            $i=substr($s=substr($s,2),0,2))echo"&#x00$i;"

            Kommentar


            • #7
              Über gib die URL der aktuellen Seite via POST und zieh dir im Zielscript den Inhalt nochmal mit file_get_contents(deine_url_hier);

              Setzt allerdings allow_url_fopen vorraus.
              "Alles im Universum funktioniert, wenn du nur weißt wie du es anwenden musst".

              Kommentar


              • #8
                Das geht leider nicht, da der Inhalt nicht immer der Gleiche ist. Sprich du kreuzt bei einer Bestellung ein paar Sachen an und wenn du mit file_get_contents den Inhalt holst, dann hast du eine "leere" Seite
                dann benutz [man]curl[/man] - damit kann man POST-Variablen mitschicken, udn die Seite ebenfalls als String speichern.

                Kommentar


                • #9
                  Ablauf:
                  1. User macht Angaben und wählt Sachen aus und klickt auf weiter
                  2. OB an
                  3. Eine neue Seite wird geladen wo die Angaben des Users nochmals aufgelistet wird.
                  4. OB aus. Jetzt gibt es dort einen 'Save as PDF' Button und diese aktuelle Seite wird als PDF gespeichert.

                  Mit dem htmlspecialchars wird jetzt tatsächlich ein pdf generiert mit Inhalt, aber leider sind Umlaute falsch und es gibt fast kein Layout.

                  Die Umlaute werden glaube ich schon bereits mit $contents = ob_get_contents(); falsch "geladen". Da hilft ein $contents=utf8_encode($contents) nicht mehr...

                  Kommentar


                  • #10
                    Zitat von mkn Beitrag anzeigen
                    Mit dem htmlspecialchars wird jetzt tatsächlich ein pdf generiert mit Inhalt, aber leider sind Umlaute falsch und es gibt fast kein Layout. Liegt aber glaube ich am pdf generator (mPDF).
                    Die Umlaute werden wegen eienr falschen Zeichenkodierung fehlerhaft sein. Das kein Layout da ist wird daran liegen das die meisten (keine Ahnung inwieweit es mPDF betrifft) Generatoren nicht alle CSS Befehle unterstützen.
                    "Alles im Universum funktioniert, wenn du nur weißt wie du es anwenden musst".

                    Kommentar


                    • #11
                      Zitat von Dark Guardian Beitrag anzeigen
                      Die Umlaute werden wegen eienr falschen Zeichenkodierung fehlerhaft sein. Das kein Layout da ist wird daran liegen das die meisten (keine Ahnung inwieweit es mPDF betrifft) Generatoren nicht alle CSS Befehle unterstützen.
                      öH stimmt, das Layout ist eigentlich richtig, nur fehlt die Hintergrundfarbe (wahrscheinlich in einem css hinterlegt). Kann es sein, dass $contents = ob_get_contents(); den Inhalt bereits "falsch" holt?

                      Kommentar


                      • #12
                        Mit echo $contents findest du es heraus.
                        [PHP]if ($var != 0) {
                        $var = 0;
                        }[/PHP]

                        Kommentar


                        • #13
                          Du willst die komplette Seite in die Seite packen und das ganz auch noch bevor sie komplett generiert wurde?! Das kann doch gar nicht gehen Oder ich steh auf dem Schlauch.

                          Seite komplett rendern, dann den Buffer auslesen (Hast du schon). Das Ganze speicherst du dann entweder in der DB oder auf dem FileSystem zwischen. Diesen Datensatz bzw. diese Datei liest du dann wieder ein. Und schon haste die ganze Seite.

                          Kommentar

                          Lädt...
                          X