Extension mit PDF Download [Gelöst]

  • made made
    Padawan
    0 x
    35 Beiträge
    0 Hilfreiche Beiträge
    24. 04. 2009, 17:52

    Hallo,

    ich habe eine Extension entwickelt, bei der sich Inhalte später als PDF herunterladen lassen, als Software verwende ich dafür die PDFlib. Klappt so weit auch wunderbar, allerdings stoße ich an einer Stelle auf ein kleines Problem:

    Ich habe im Backend eine Seite angelegt, die über einen GET Parameter die Id eines Datensatzes erhält, der in das PDF kommen soll. Nun erzeuge ich mit der PDFlib den Inhalt des PDF Dokuments und frage am Ende den Inhalt des Buffers ab:

    1. $buf = $p->get_buffer();
    2. $len = strlen($buf);
    3.  
    4. header('Content-type: application/pdf');
    5. header('Content-Length: $len');
    6. header('Content-Disposition: attachment; filename='.$filename);
    7. echo($buf);

    Da das ganze ja innerhalb einer TYPO3 Seite ist, ist mein Problem, dass für TYPO3 nach dem echo Befehl die Arbeit ja nicht getan ist, es werden dann also noch zusätzliche Ausgaben gemacht, wobei ich den TYPO3 HTML Header ja problemlos abschalten kann.
    Daher meine Frage, wie kann ich das PDF an den Browser senden und alle weiteren Ausgaben von TYPO3 unterdrücken, ohne mit dem Exit Befehl die Ausgabe zu stoppen, das wäre in meinen Augen unsauber.

    Ich hoffe, ich konnte mein Problem klar ausdrücken.

    Vielen Dank

    Marc


  • 1
  • einpraegsam.net einpraegs...
    MacGyver
    0 x
    9340 Beiträge
    80 Hilfreiche Beiträge
    24. 04. 2009, 20:04

    Eigener typenum, der alles andere deaktiviert - Beispiel powermail:
    [TS]powermailJS = PAGE
    powermailJS {
    typeNum = 3131
    10 < plugin.tx_powermail_pi1

    config {
    disableAllHeaderCode = 1
    xhtml_cleaning = 0
    admPanel = 0
    }
    }
    [/TS]

    in2code.de - Wir leben TYPO3
    - Möchtest du TYPO3 komplett verstehen? Eigene Erweiterungen erstellen? Bei uns gibt es auch Schulungen https://www.in2code.de/produkte/typo3-schulungen/
    - Die Arbeit mit TYPO3 macht dir Spaß? Du stehst auf Berge? Komm zu uns! https://www.in2code.de/agentur/karriere/

  • made made
    Padawan
    0 x
    35 Beiträge
    0 Hilfreiche Beiträge
    24. 04. 2009, 22:59

    Hallo und danke für die schnelle Antwort,

    ich hab deine Lösung nun einmal genau umgesetzt, habe jetzt allerdings im Code folgendes stehen:

    [HTML]<!--

    BEGIN: Content of extension "mytest", plugin "tx_ mytest_pi2"

    -->
    <div class="tx-mytest-pi2">
    hier der Inhalt
    </div>

    <!-- END: Content of extension "mytest", plugin "tx_ mytest_pi2" -->
    [/HTML]

    wie bekomm ich denn den HTML Kommentar und das div noch weg? Ich hab im Template außer den 11 Zeilen TS, dem Template Namen und dem Setup der Erweiterung bei Include Static nichts gesetzt. Muss ich hier noch etwas auswählen oder in meiner Extension konfigurieren?

  • Gregor Gregor
    R2-D2
    0 x
    65 Beiträge
    0 Hilfreiche Beiträge
    24. 04. 2009, 23:37

    Um das <div> zu entfernen, musst du in der ..._pi2.php in der in der Funktion main() am Ende eine kleine Korrektur vornehmen:

    1. return $this->pi_wrapInBaseClass($content);
    in
    1. return $content;
    ändern.

    Das wrapInBaseClass packt dir da immer dieses <div> drumherum. Eigentlich sinnvoll, nur eben manchmal etwas unpraktisch. Oder du bastelst dir in deinem Skript ne kleine Weiche, dass je nach Modus oder so mit bzw. ohne umschließendes div der Content ausgeliefert wird.

    Wo diese Kommentare herkommen, ist mir aber nicht klar. Die habe ich bisher noch nicht in meinem Quellcode entdeckt, egal um welche Extension etc. es ging.

  • made made
    Padawan
    0 x
    35 Beiträge
    0 Hilfreiche Beiträge
    24. 04. 2009, 23:44

    Hallo Gregor,

    natürlich, da sucht man stundenlang im TS und das Problem liegt im PHP Code. Dank

    Zu den Kommentaren, das liegt wiederum am TS, man muss einfach [TS]config.disablePrefixComment = 1[/TS] setzen, dann sind die Kommentare weg.

    Viele Grüße

    Marc

  • 1