LaTeX zum Bild | Java
So konvertieren Sie LaTeX in PNG
Schauen wir uns den Java-Code genauer an, der die einfachste Möglichkeit bietet, LaTeX in das PNG-Format zu konvertieren.
Setzen Sie inputFile auf den vollständigen Pfad Ihrer LaTeX-Datei, beispielsweise hello-world.ltx, und outputDirectory auf einen vorhandenen Ausgabeordner. Importieren Sie die im Beispiel verwendeten Klassen aus com.aspose.tex und com.aspose.tex.rendering. Die aufrufende Methode muss Ausnahmen behandeln oder deklarieren. Wenden Sie eine Lizenz gemäß der
Lizenzierungsanleitung an, um Evaluierungseinschränkungen zu vermeiden. Das Beispiel verwendet einen nichtinteraktiven Modus und schließt seine Ausgaberessourcen. Das PNG-Beispiel verwendet 300 DPI. Für die einseitige Eingabe hello-world.ltx heißen die automatischen Ausgabedateien je nach Format hello-world.png, hello-world.jpg, hello-world.tif, hello-world.bmp oder hello-world.svg.
1// Convert LaTeX to PNG.
2// inputFile is the full input path; outputDirectory is an existing output folder.
3TeXOptions options = TeXOptions.consoleAppOptions(TeXConfig.objectLaTeX());
4OutputFileSystemDirectory output = new OutputFileSystemDirectory(outputDirectory);
5options.setOutputWorkingDirectory(output);
6PngSaveOptions saveOptions = new PngSaveOptions();
7saveOptions.setResolution(300);
8options.setSaveOptions(saveOptions);
9options.setInteraction(Interaction.NonstopMode);
10
11ImageDevice device = new ImageDevice();
12TeXJobResult result;
13try {
14 result = new TeXJob(inputFile, device, options).run();
15} finally {
16 device.dispose();
17 output.close();
18}Das erste, was wir also tun müssen (manchmal nicht das allererste, wie wir später herausfinden werden), ist, eine Instanz der Klasse TeXOptions zu erstellen. Die einzige statische Methode, die dies tut, ist consoleAppOptions(), also kümmern wir uns nicht um die Bedeutung ihres Namens. Die Methode verwendet die objectLaTeX()-Instanz der Klasse TeXConfig, die genau zum Konvertieren einer LaTeX-Datei geeignet ist. Diese Konfiguration weist die Object-TeX-Engine an, das Object-LaTeX-Format zu laden und bereit zu sein, die LaTeX-Datei zu akzeptieren. Das Object LaTeX-Format ist eigentlich nur das LaTeX-Format, außer dass es Object TeX-spezifische Grundelemente verwendet, um die Seitenmetriken einzurichten.
Die erste der erforderlichen Optionen ist OutputWorkingDirectory, die den Raum oder Bereich definiert, in den die TeX-Ausgabe geschrieben wird. Hier finden Sie die Details zum Ausgabeverzeichniskonzept in Aspose.TeX für Java. In diesem Beispiel verwenden wir die Klasse OutputFileSystemDirectory, die es uns ermöglicht, die Ausgabe in das angegebene Verzeichnis oder den angegebenen Ordner zu schreiben.
Die zweite Option ist eine Klasseninstanz SaveOptions, die die Transformation des Objektmodells in das Zielformat steuert. Da wir LaTeX in PNG konvertieren, ist es die Klasseninstanz PngSaveOptions, die es uns ermöglicht, die Auflösung der Ausgabebilder anzugeben.
Als nächstes müssen wir eine Instanz der Klasse TeXJob erstellen. Wenn wir eine im Dateisystem gespeicherte LaTeX-Datei konvertieren möchten, verwenden wir diese Version des Konstruktors. Wir sollten den vollständigen Pfad zur Datei angeben. Andernfalls sucht die Engine im aktuellen Verzeichnis (das hier definiert ist) danach und wird es höchstwahrscheinlich nicht finden. Dennoch können wir die Erweiterung weglassen, wenn unsere Datei die Erweiterung .tex hat. Die Engine wird es automatisch anhängen. Das zweite Argument des Konstruktors ist eine Klasseninstanz Device. Da wir LaTeX in PNG konvertieren, handelt es sich um eine Instanz der Klasse ImageDevice, die allen unterstützten Bildformaten gemeinsam ist. Als letztes Argument übergeben wir die kürzlich vorbereiteten Konvertierungsoptionen.
Jetzt müssen wir nur noch den Job ausführen.
Unabhängig davon, ob die Ausführung erfolgreich war oder nicht, ist das erste Ergebnis, das wir sehen, die Terminalausgabe. Im Erfolgsfall sieht es etwa so aus:
1This is ObjectTeX, Version 3.1415926-1.0 (Aspose.TeX 21.8)
2entering extended mode
3
4(<input_directory>\hello-world.ltx
5LaTeX2e <2011/06/27>
6(article.cls
7Document Class: article 2007/10/19 v1.4h Standard LaTeX document class
8(size10.clo))
9No file hello-world.aux.
10[1]
11(<output_directory>\hello-world.aux) )
12Output written on hello-world.png (1 page).
13Transcript written on hello-world.log.Weitere Produkte des Motorlaufs finden wir in dem Ordner, den wir als Ausgabeverzeichnis angegeben haben. Dabei handelt es sich um die Transkriptdatei (.log) und, Voila!, die Hauptausgabe-PNG-Bilddatei(en).
Eine alternative Möglichkeit, die Hauptausgabe-PNG-Datei(en) zu schreiben.
Es gibt eine andere Möglichkeit, Bilddaten als Array von Byte-Arrays abzurufen. Jedes Array in der zweiten Dimension repräsentiert Bilddaten für eine separate Seite.
1// Convert LaTeX to PNG and save each page from the returned byte arrays.
2// inputFile is the full input path; outputDirectory is an existing output folder.
3TeXOptions options = TeXOptions.consoleAppOptions(TeXConfig.objectLaTeX());
4OutputFileSystemDirectory output = new OutputFileSystemDirectory(outputDirectory);
5options.setOutputWorkingDirectory(output);
6PngSaveOptions saveOptions = new PngSaveOptions();
7saveOptions.deviceWritesImages(false);
8options.setSaveOptions(saveOptions);
9options.setInteraction(Interaction.NonstopMode);
10
11ImageDevice device = new ImageDevice();
12TeXJobResult result;
13try {
14 result = new TeXJob(inputFile, device, options).run();
15 byte[][] pages = device.getResult();
16 for (int i = 0; i < pages.length; i++) {
17 Files.write(Paths.get(outputDirectory, "page-" + (i + 1) + ".png"), pages[i]);
18 }
19} finally {
20 device.dispose();
21 output.close();
22}Das manuelle Beispiel benötigt auch java.nio.file.Files und java.nio.file.Paths. Es speichert Seitendaten aus ImageDevice.getResult() als page-1.png, page-2.png usw. Durch deviceWritesImages(false) ist die automatische PNG-Ausgabe deaktiviert; die manuell gespeicherten Seiten werden nicht im Ausgabeverzeichnis dupliziert. Dies unterscheidet sich von der
PDF-Stream-Ausgabe, bei der der Stream das Ziel eines einzelnen PDF-Dokuments bestimmt.
Über Eingabemöglichkeiten
Falls unsere Haupteingabedatei Abhängigkeiten erfordert, beispielsweise Pakete, die nicht im grundlegenden LaTeX-System und den unterstützten Paketen enthalten sind, MÜSSEN wir die Option
RequiredInputDirectory auf die gleiche Weise festlegen, wie wir die Option
OutputWorkingDirectory festlegen. Option und legen Sie die Abhängigkeiten in diesem Verzeichnis ab. Abhängigkeiten können beliebig in Unterverzeichnissen organisiert werden. Falls wir unsere eigenen Dateien in den Schriftsatzprozess einbeziehen möchten, beispielsweise externe Grafikdateien, MÜSSEN wir auch das
InputWorkingDirectory festlegen, indem wir den Pfad zum Speicherort verwenden, an dem diese Dateien gesammelt werden. Wir können die Haupteingabedatei auch irgendwo im Eingabeverzeichnis platzieren und den relativen Pfad an den TeXJob-Konstruktor übergeben (oder überhaupt keinen Pfad angeben, wenn sich die Haupteingabedatei im Stammverzeichnis befindet).
Hier finden Sie die Details zum Eingabeverzeichniskonzept in Aspose.TeX für Java und den bereitgestellten Implementierungen.
Weitere TeX-Joboptionen werden hier besprochen.
Sie können sich auch die kostenlose LaTeX-zu-PNG-Konvertierung Web-App ansehen, die auf der API Aspose.TeX für .NET basiert. Hier ist die Java-Versionsseite.
Im Folgenden besprechen wir die LaTeX-Konvertierung in andere unterstützte Rasterbildformate. Wir gehen nicht auf Details ein, nur weil es eigentlich keine Details gibt. Der einzige Unterschied besteht im Typ der Eigenschaft SaveOptions in den Konvertierungsoptionen.
So konvertieren Sie LaTeX in JPG
1// Convert LaTeX to JPEG.
2// inputFile is the full input path; outputDirectory is an existing output folder.
3TeXOptions options = TeXOptions.consoleAppOptions(TeXConfig.objectLaTeX());
4OutputFileSystemDirectory output = new OutputFileSystemDirectory(outputDirectory);
5options.setOutputWorkingDirectory(output);
6options.setSaveOptions(new JpegSaveOptions());
7options.setInteraction(Interaction.NonstopMode);
8
9ImageDevice device = new ImageDevice();
10TeXJobResult result;
11try {
12 result = new TeXJob(inputFile, device, options).run();
13} finally {
14 device.dispose();
15 output.close();
16}Sie können sich auch die kostenlose LaTeX-zu-JPG-Konvertierung Web-App ansehen, die auf der API Aspose.TeX für .NET basiert. Hier ist die Java-Versionsseite.
So konvertieren Sie LaTeX in TIFF
1// Convert LaTeX to TIFF.
2// inputFile is the full input path; outputDirectory is an existing output folder.
3TeXOptions options = TeXOptions.consoleAppOptions(TeXConfig.objectLaTeX());
4OutputFileSystemDirectory output = new OutputFileSystemDirectory(outputDirectory);
5options.setOutputWorkingDirectory(output);
6options.setSaveOptions(new TiffSaveOptions());
7options.setInteraction(Interaction.NonstopMode);
8
9ImageDevice device = new ImageDevice();
10TeXJobResult result;
11try {
12 result = new TeXJob(inputFile, device, options).run();
13} finally {
14 device.dispose();
15 output.close();
16}Sie können sich auch die kostenlose LaTeX-zu-TIFF-Konvertierung Web-App ansehen, die auf der API Aspose.TeX für .NET basiert. Hier ist die Java-Versionsseite.
So konvertieren Sie LaTeX in BMP
1// Convert LaTeX to BMP.
2// inputFile is the full input path; outputDirectory is an existing output folder.
3TeXOptions options = TeXOptions.consoleAppOptions(TeXConfig.objectLaTeX());
4OutputFileSystemDirectory output = new OutputFileSystemDirectory(outputDirectory);
5options.setOutputWorkingDirectory(output);
6options.setSaveOptions(new BmpSaveOptions());
7options.setInteraction(Interaction.NonstopMode);
8
9ImageDevice device = new ImageDevice();
10TeXJobResult result;
11try {
12 result = new TeXJob(inputFile, device, options).run();
13} finally {
14 device.dispose();
15 output.close();
16}Sie können sich auch die kostenlose LaTeX-zu-BMP-Konvertierung Web-App ansehen, die auf der API Aspose.TeX für .NET basiert. Hier ist die Java-Versionsseite.
So konvertieren Sie LaTeX in SVG
Und ein weiteres unterstütztes Zielformat ist SVG. Skalierbare Vektorgrafiken (SVG) ist ein XML-basiertes Vektorbildformat zum Definieren zweidimensionaler Grafiken mit Unterstützung für Interaktivität und Animation.
SVG-Bilder werden in einem Vektorgrafikformat definiert und in XML-Textdateien gespeichert. Dies bedeutet, dass SVG-Bilder ohne Qualitätsverlust in der Größe skaliert werden können und SVG-Dateien durchsucht, indiziert, mit Skripts versehen und komprimiert werden können. Die XML-Textdateien können mit Texteditoren oder Vektorgrafik-Editoren erstellt und bearbeitet werden. Sie werden von den am häufigsten verwendeten Webbrowsern gerendert.
Außerdem gibt es die Bibliothek Aspose.SVG, die verschiedene Funktionen basierend auf dem SVG-Format bietet. Dazu gehören das Erstellen, Laden, Bearbeiten und Konvertieren von SVG-Dokumenten.
Die Konvertierung in SVG ist genauso einfach wie die Konvertierung in Rasterbildformate, außer dass wir zusätzlich zu den SaveOptions das Gerät in eine Instanz von SvgDeviceKlasse ändern müssen.
1// Convert LaTeX to SVG.
2// inputFile is the full input path; outputDirectory is an existing output folder.
3TeXOptions options = TeXOptions.consoleAppOptions(TeXConfig.objectLaTeX());
4OutputFileSystemDirectory output = new OutputFileSystemDirectory(outputDirectory);
5options.setOutputWorkingDirectory(output);
6options.setSaveOptions(new SvgSaveOptions());
7options.setInteraction(Interaction.NonstopMode);
8
9SvgDevice device = new SvgDevice();
10TeXJobResult result;
11try {
12 result = new TeXJob(inputFile, device, options).run();
13} finally {
14 device.dispose();
15 output.close();
16}Sie können sich auch die kostenlose LaTeX-zu-SVG-Konvertierung Web-App ansehen, die auf Aspose.TeX für .NET basiert. Hier ist die Java-Versionsseite.