
Ich arbeite an der Servlet-Programmierung und habe mich gefragt, ob pdfTeX oder pdfLaTeX über eine Möglichkeit verfügen, Bytestreams unter Windows ein- oder auszugeben. Auf diese Weise könnte ich einen String direkt einspeisen und die Ausgabe als PDF-Antwort an den Client streamen ... irgendwelche Ideen?
Antwort1
Bis zu einem gewissen Grad pdfTeX
kann Standardeingabe gelesen werden. Es ist jedoch nicht ungewöhnlich, eine LaTeX-Datei mehr als einmal zu kompilieren, z. B. für das Inhaltsverzeichnis oder um die Referenzen richtig zu machen.
Als Ausgabedatei (pdf) schreibt TeX .log
in jedem Fall eine Datei und die Ausgabedatei ist nicht für Streaming geeignet, da pdfTeX
in der geschriebenen Ausgabedatei zurückgesprungen wird. (Es schreibt die Länge des Streams eines PDF-Stream-Objekts in das Wörterbuch dieses Objekts vor dem Stream-Teil.) Und LaTeX möchte möglicherweise Hilfsdateien ( .aux
, .toc
, …) schreiben.
Somit könnte das Servlet den Eingabestrom lesen, ihn in eine Datei in einem temporären Verzeichnis schreiben und aufrufen (pdf)(la)tex
(oder welchen TeX-Compiler/welches Format auch immer). Dann .log
muss die Datei auf Inhalt analysiert werden rerun
. Auch andere Programme wie bibtex
oder makeindex
müssen möglicherweise aufgerufen werden.
Wenn die Kompilierungsläufe abgeschlossen sind, kann die Ausgabedatei zurückgestreamt und das temporäre Verzeichnis bereinigt werden.