PDF-Export
In lib/classes/exportdocuments/ExportPDF.class.php liegt eine Klasse bereit, mit der es einfach ist, aus in Stud.IP gängigem Text, der eventuell auch mit Stud.IP-Formatierung versehen ist, in ein PDF zu exportieren. Im Klartext heißt das: man hat einen Text wie den Inhalt eines Wikis und will daraus eine PDF bekommen, in der die Tabellen und Grafiken korrekt dartgestellt werden. Der Code dafür sieht dann in etwa so aus:
$doc = new ExportPDF();
$doc->addPage();
$doc->addContent('Hallo, %%wir%% benutzen :studip:-Formatierung.');
$doc->dispatch("test_pdf");
Zuerst muss man ein Dokument-Objekt initialisieren. In unserem Fall ist das $doc
. Danach fängt man eine neue Seite an mit $doc->addPage()
und befüllt diese Seite mit Inhalten, die, wie schon erwähnt, mit Stud.IP-Formatierung versehen sind. In der letzten Zeile wird dieses Dokument an den Aufrufer der Seite ausgegeben. Dadurch allerdings wird jede andere Ausgabe natürlich ignoriert, die vorher oder nachher geschrieben worden ist. Sobald dispatch aufgerufen wird, wird nur noch das PDF übermittelt (mitsamt MIME-Type). Der Parameter von disptach ist überdies der Dateiname ohne das ".pdf", was automatisch angefügt wird.
Es gibt noch eine zweite Art der Auslieferung des PDF: und zwar kann man das PDF im Dateisystem von Stud.IP abspeichern und als Datei in die Datenbanktabelle dokumente einfügen. Dazu schreibt man
$doc = new ExportPDF();
$doc->addPage();
$doc->addContent('Hallo, %%wir%% benutzen :studip:-Formatierung.');
$studip_dokument = $doc->save("test_pdf", $folder_id);
wobei nur die letzte Zeile ausgewechselt wurde. save
speichert das Dokument und liefert ein Objekt vom Typ StudipDocument zurück. Man kann mittels dieses Objekte mit $studip_dokument->getId()
die md5-ID des Dokumentes bekommen. Gibt man zudem eine folder_id beim Aufruf von save
an, so wird die Datei auch direkt in einen Dateibereich eingefügt und man muss sich um nichts mehr kümmern.
Die Klasse ExportPDF erbt seine schöne Einfachheit von der Klasse TCPDF, die noch über einige andere schicke Dinge verfügt. Das bedeutet, dass $doc auch alle Methoden von TCPDF benutzen kann. Sie dessen Dokumentation.