LaTeX zu XPS | Java
Ein weiteres Zielformat ist XPS. Eine XPS-Datei ist physisch ein ZIP-Paket, das den paginierten Inhalt eines Dokuments sowie die Metadaten enthält, die für die ordnungsgemäße Anzeige durch bestimmte Viewer (z. B. Windows XPS Viewer) und das Drucken erforderlich sind. Alle Daten in einem Paket werden als Dateien in Verzeichnissen organisiert. Einige davon enthalten Ressourcen wie Bilder, Schriftarten und ICC-Profile. Andere sind XML-Dateien in verschiedenen spezifischen Schemata. Zu letzteren zählen Dateien, die die Dokumentdaten selbst enthalten. Dokumentdaten sind eine Reihe von Dateien – jede Datei enthält Daten für eine einzelne Seite des Dokuments. Solche Dateien bestehen aus einem einzelnen Seitenelement und einem Baum aus untergeordneten Elementen – Canvas, Path und Glyphs. Canvas ist ein Gruppierungselement, das andere Canvases, Pfade und Glyphen enthalten kann. Sein Zweck ist die Kontrolle über das Erscheinungsbild aller untergeordneten Elemente als Gruppe. Path-Elemente werden zum Definieren von Vektorgrafikpfaden verwendet. Und Glyphen-Elemente werden verwendet, um Textinhalte zu definieren. Alle drei Elemente verfügen über Eigenschaften, um verschiedene Aspekte des Erscheinungsbilds zu definieren.
Es gibt die Bibliothek Aspose.Page, die eine API zum Bearbeiten von XPS-Dokumenten sowie zum Konvertieren dieser in PDF- und Rasterbildformate bereitstellt.
So konvertieren Sie LaTeX in XPS
Die Konvertierung in XPS ist genauso einfach wie die Konvertierung in Rasterbildformate, außer dass wir zusätzlich zu den SaveOptions eine Instanz der Klasse XpsDevice verwenden müssen.
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. Für die eigenständige Eingabedatei hello-world.ltx lautet die Standardausgabe hello-world.xps.
1// Convert LaTeX to XPS using the default output filename.
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 XpsSaveOptions());
7options.setInteraction(Interaction.NonstopMode);
8
9XpsDevice device = new XpsDevice();
10TeXJobResult result;
11try {
12 result = new TeXJob(inputFile, device, options).run();
13} finally {
14 device.dispose();
15 output.close();
16}Eine alternative Möglichkeit, die XPS-Hauptausgabedatei zu schreiben
Es gibt einen weiteren Konstruktor der Klasse XpsDevice, der es uns ermöglicht, die resultierende XPS-Datei auf alternative Weise abzurufen.
Verwenden Sie dieselben Werte für inputFile und outputDirectory wie oben. Setzen Sie xpsFile auf einen java.nio.file.Path, beispielsweise Paths.get(outputDirectory, "any-name.xps"). Importieren Sie zusätzlich zu den Aspose.TeX-Klassen java.io.OutputStream, java.nio.file.Files, java.nio.file.Path und java.nio.file.Paths. Der Stream bestimmt das Ziel der XPS-Datei; Hilfsdateien werden weiterhin in outputDirectory geschrieben.
1// Convert LaTeX to XPS using an explicitly selected output stream.
2// inputFile is the full input path; outputDirectory is an existing output folder.
3// xpsFile is the java.nio.file.Path of the XPS file to create.
4TeXJobResult result;
5try (OutputStream xpsStream = Files.newOutputStream(xpsFile)) {
6 TeXOptions options = TeXOptions.consoleAppOptions(TeXConfig.objectLaTeX());
7 OutputFileSystemDirectory output = new OutputFileSystemDirectory(outputDirectory);
8 options.setOutputWorkingDirectory(output);
9 options.setSaveOptions(new XpsSaveOptions());
10 options.setInteraction(Interaction.NonstopMode);
11
12 XpsDevice device = new XpsDevice(xpsStream);
13 try {
14 result = new TeXJob(inputFile, device, options).run();
15 } finally {
16 device.dispose();
17 output.close();
18 }
19}Der Effekt ist derselbe, den wir hier erhalten.
Sie können sich auch die kostenlose LaTeX-zu-XPS-Konvertierung Web-App ansehen, die auf der Aspose.TeX for .NET-API basiert. Hier ist die Java-Versionsseite.