LaTeX zu PDF | Aspose.TeX für Python
Konvertieren von LaTeX in PDF
Schauen wir uns nun den Python-Code genauer an, der den einfachsten Ansatz zur Konvertierung von LaTeX in das PDF-Format bietet.
1# Create conversion options for Object LaTeX format upon Object TeX engine extension.
2options = TeXOptions.console_app_options(TeXConfig.object_latex)
3# Specify a file system working directory for the output.
4options.output_working_directory = OutputFileSystemDirectory(Util.output_directory)
5# Initialize the options for saving in PDF format.
6options.save_options = PdfSaveOptions()
7# Run LaTeX to PDF conversion.
8TeXJob(path.join(Util.input_directory, "hello-world.ltx"), PdfDevice(), options).run()
Zunächst müssen wir eine Instanz der Klasse TeXOptions erstellen. Die Methode console_app_options() ist die einzige statische Methode, die dies erreicht, also machen Sie sich über ihren Namen keine Sorgen. Diese Methode benötigt eine object_latex-Instanz der Klasse TeXConfig, die sich perfekt zum Konvertieren einer LaTeX-Datei eignet. Diese Konfiguration weist die Object-TeX-Engine an, das Object-LaTeX-Format zu laden und sich auf die Verarbeitung der LaTeX-Datei vorzubereiten. Das Object LaTeX-Format ist im Wesentlichen dasselbe wie das LaTeX-Format, verwendet jedoch Object TeX-spezifische Grundelemente, um die Seitenmetriken zu definieren.
Die erste Option, die angegeben werden muss, ist output_working_directory, die den Speicherort bestimmt, an dem die TeX-Ausgabe gespeichert wird. Bei Bedarf finden Sie weitere Informationen zum Konzept des Ausgabeverzeichnisses in Aspose.TeX. In diesem speziellen Fall verwenden wir die Klasse OutputFileSystemDirectory, die es uns ermöglicht, die Ausgabe in ein bestimmtes Verzeichnis oder einen bestimmten Ordner zu schreiben.
Die zweite Option erfordert eine Instanz der Klasse SaveOptions, die bestimmt, wie das Objektmodell in das gewünschte Format umgewandelt wird. In unserem Fall verweist es beim Konvertieren von LaTeX in PDF auf eine Instanz der Klasse PdfSaveOptions.
Um eine im Dateisystem gespeicherte LaTeX-Datei zu konvertieren, müssen wir eine Instanz der Klasse TeXJob mit dem Konstruktor erstellen, der den vollständigen Pfad der Datei als Parameter verwendet. Wenn wir nicht den vollständigen Pfad angeben, sucht die Engine im aktuellen Verzeichnis (dem Arbeitsverzeichnis des Skripts) nach der Datei und findet sie möglicherweise nicht. Wir können die Erweiterung jedoch weglassen, wenn unsere Datei die Erweiterung „.tex“ hat, da die Engine sie automatisch anhängt. Das zweite Argument des Konstruktors ist eine Instanz der Klasse Device. Da wir in unserem Fall LaTeX in PDF konvertieren, handelt es sich um eine Instanz der Klasse PdfDevice. Abschließend übergeben wir als letztes Argument die kürzlich vorbereiteten Konvertierungsoptionen.
Jetzt müssen Sie nur noch den Job ausführen.
Nach der Ausführung, unabhängig davon, ob sie erfolgreich war oder nicht, sehen wir als Erstes die Terminalausgabe. Bei erfolgreicher Ausführung sieht die Ausgabe 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.pdf (1 page).
13Transcript written on hello-world.log.
In dem Ordner, den wir als Ausgabeverzeichnis angegeben haben, finden wir neben anderen Ergebnissen der Arbeit der Engine auch die Transkriptdatei und hier ist sie! die Hauptausgabe-PDF-Datei.
Eine alternative Möglichkeit, die Hauptausgabe-PDF-Datei zu schreiben
Die Klasse PdfDevice verfügt über einen weiteren Konstruktor, der es uns ermöglicht, die resultierende PDF-Datei auf andere Weise zu erhalten.
1# Create the stream to write the PDF file to.
2with open(path.join(Util.output_directory, "any-name.pdf"), "wb") as pdf_stream:
3 # Create conversion options for Object LaTeX format upon Object TeX engine extension.
4 options = TeXOptions.console_app_options(TeXConfig.object_latex)
5 # Specify a file system working directory for the output.
6 options.output_working_directory = OutputFileSystemDirectory(Util.output_directory)
7 # Initialize the options for saving in PDF format.
8 options.save_options = PdfSaveOptions()
9 # Run LaTeX to PDF conversion.
10 TeXJob(path.join(Util.input_directory, "hello-world.ltx"), PdfDevice(pdf_stream), options).run()
Die Hauptausgabe-PDF-Datei erhält den Namen „any-name.pdf“ und befindet sich im angegebenen Verzeichnis. Im Gegensatz zur Bildausgabe befinden sich jedoch keine anderen PDF-Dateien im durch die Konvertierungsoptionen angegebenen Ausgabeverzeichnis. Die Ausnahme besteht, wenn sich „any-name.pdf“ im selben Dateisystemverzeichnis befindet, das der Option output_working_directory über OutputFileSystemDirectory zugewiesen wurde.
Über Eingabemöglichkeiten
Wenn unsere Haupteingabedatei Abhängigkeiten erfordert, wie z. B. Pakete, die nicht im grundlegenden LaTeX-System enthalten sind, und unterstützte Pakete, ist es notwendig, die Option required_input_directory auf ähnliche Weise festzulegen, wie wir die Option output_working_directory festlegen Platzieren Sie die Abhängigkeiten in diesem Verzeichnis. Die Abhängigkeiten können beliebig in Unterverzeichnissen organisiert werden. Wenn wir darüber hinaus unsere eigenen Dateien in den Schriftsatzprozess einbeziehen möchten, beispielsweise externe Grafikdateien, müssen wir außerdem das input_working_directory festlegen, indem wir den Pfad zum Speicherort dieser Dateien verwenden. Wir können die Haupteingabedatei auch im Eingabeverzeichnis platzieren und den relativen Pfad in der Methode „run()“ angeben oder überhaupt keinen Pfad angeben, wenn sich die Haupteingabedatei im Stammverzeichnis befindet. Weitere Einzelheiten zum Eingabeverzeichniskonzept in Aspose.TeX für Python und den bereitgestellten Implementierungen finden Sie hier.
Es werden auch andere TeX-Joboptionen besprochen.
Sie können auch die kostenlose Web-App für die Konvertierung von LaTeX in PDF erkunden, die mit der Aspose.TeX für .NET API entwickelt wurde.