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:
$buf = $p->get_buffer();
$len = strlen($buf);
header('Content-type: application/pdf');
header('Content-Length: $len');
header('Content-Disposition: attachment; filename='.$filename);
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
Eigener typenum, der alles andere deaktiviert - Beispiel powermail:
powermailJS = PAGE
powermailJS {
typeNum = 3131
10 < plugin.tx_powermail_pi1
config {
disableAllHeaderCode = 1
xhtml_cleaning = 0
admPanel = 0
}
}
Hallo und danke für die schnelle Antwort,
ich hab deine Lösung nun einmal genau umgesetzt, habe jetzt allerdings im Code folgendes stehen:
<!--
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" -->
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?
Um das <div> zu entfernen, musst du in der ..._pi2.php in der in der Funktion main() am Ende eine kleine Korrektur vornehmen:
return $this->pi_wrapInBaseClass($content);
in
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.
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
config.disablePrefixComment = 1
setzen, dann sind die Kommentare weg.
Viele Grüße
Marc