LaTeX zum Bild | Python

Aspose.TeX für Python bietet uns die Möglichkeit, LaTeX-Dateien in verschiedene Rasterbildformate zu konvertieren.

Konvertieren von LaTeX in PNG

Schauen wir uns nun den Python-Code an, der den einfachsten Ansatz zur Konvertierung von LaTeX in das PNG-Format bietet.

Setzen Sie ASPOSE_TEX_INPUT_FILE auf Ihre LaTeX-Datei und ASPOSE_TEX_OUTPUT_DIR auf das Ausgabeverzeichnis, oder ändern Sie die Pfade im Beispiel. Die Standardwerte sind hello-world.ltx und output. Wenden Sie vorher eine Lizenz an. Zusätzliche Eingabedateien werden neben dem Hauptdokument gesucht; die Verarbeitung erfolgt ohne interaktive Eingaben. Lizenzierung

 1# Convert LaTeX to PNG.
 2import os
 3from pathlib import Path
 4from aspose.tex import Interaction, TeXConfig, TeXJob, TeXOptions
 5from aspose.tex.io import InputFileSystemDirectory, OutputFileSystemDirectory, OutputMemoryTerminal
 6from aspose.tex.presentation.image import ImageDevice, PngSaveOptions
 7
 8# Set these paths to your LaTeX document and output directory.
 9input_file = Path(os.environ.get("ASPOSE_TEX_INPUT_FILE", "hello-world.ltx")).resolve()
10output_dir = Path(os.environ.get("ASPOSE_TEX_OUTPUT_DIR", "output")).resolve()
11if not input_file.is_file():
12    raise FileNotFoundError(input_file)
13output_dir.mkdir(parents=True, exist_ok=True)
14
15# Use the Object LaTeX format and resolve additional inputs beside the main file.
16options = TeXOptions.console_app_options(TeXConfig.object_latex)
17options.input_working_directory = InputFileSystemDirectory(str(input_file.parent))
18options.output_working_directory = OutputFileSystemDirectory(str(output_dir))
19options.interaction = Interaction.NONSTOP_MODE
20options.terminal_out = OutputMemoryTerminal()
21options.save_options = PngSaveOptions()
22device = ImageDevice(True)
23job_result = TeXJob(str(input_file), device, options).run()

Zunächst müssen wir mit der Methode console_app_options() eine Instanz der Klasse TeXOptions erstellen. Machen Sie sich keine Sorgen um den Namen, es ist nur die statische Methode, die die Instanz erstellt. Diese Methode verwendet die Instanz object_latex der Klasse TeXConfig, die sich perfekt zum Konvertieren einer LaTeX-Datei eignet. Diese Konfiguration richtet die Object TeX-Engine so ein, dass sie das Object LaTeX-Format lädt und für die Verarbeitung der LaTeX-Datei bereit ist. 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 der notwendigen Optionen ist output_working_directory, die den Speicherort angibt, an dem die TeX-Ausgabe gespeichert wird. Bei Interesse können Sie weitere Informationen zum Konzept des Ausgabeverzeichnisses in Aspose.TeX für Python erfahren. In diesem speziellen Beispiel verwenden wir die Klasse OutputFileSystemDirectory, um die Ausgabe in ein bestimmtes Verzeichnis oder einen bestimmten Ordner zu schreiben.

Die zweite Option ist eine Instanz der Klasse SaveOptions, die für die Verwaltung der Konvertierung vom Objektmodell in das gewünschte Format verantwortlich ist. Da wir in diesem Fall LaTeX in PNG konvertieren, verwenden wir die Klasseninstanz PngSaveOptions, mit der wir die Auflösung der Ausgabebilder angeben können.

Als nächstes erstellen wir eine Instanz der Klasse TeXJob. Da wir in diesem Fall eine im Dateisystem gespeicherte LaTeX-Datei konvertieren möchten, verwenden wir diese Version des Konstruktors . Wir müssen den vollständigen Pfad zur Datei angeben, andernfalls sucht die Engine im aktuellen Verzeichnis (dem Arbeitsverzeichnis des Skripts) danach und findet sie möglicherweise nicht. Die Erweiterung „.tex“ kann jedoch weggelassen werden, da die Engine sie automatisch anhängt. Das zweite Argument des Konstruktors ist eine Instanz der Klasse Device. Da wir LaTeX in PNG konvertieren, handelt es sich um eine ImageDevice-Klasseninstanz, die allen unterstützten Bildformaten gemeinsam ist. Abschließend übergeben wir als letztes Argument die vorbereiteten Konvertierungsoptionen.

Jetzt müssen Sie nur noch den Job ausführen.

Das Beispiel erfasst die Terminalausgabe in OutputMemoryTerminal. Im Ausgabeverzeichnis liegt außerdem ein .log-Protokoll. Bei erfolgreicher Konvertierung sieht es etwa so aus; Versionsangaben können abweichen:

 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.

Die Ergebnisse der Arbeit der Engine finden Sie im von uns angegebenen Ausgabeverzeichnis. Dazu gehören die Transkriptdatei und vor allem die PNG-Bilddatei(en) für die Hauptausgabe.

Eine alternative Möglichkeit, die Hauptausgabe-PNG-Datei(en) zu schreiben.

Es gibt eine alternative Methode, um Bilddaten als Array von Byte-Arrays zu erhalten, wobei jedes Array in der zweiten Dimension die Bilddaten für eine separate Seite darstellt.

 1# Convert LaTeX to PNG and save each page from the returned byte arrays.
 2import os
 3from pathlib import Path
 4from aspose.tex import Interaction, TeXConfig, TeXJob, TeXOptions
 5from aspose.tex.io import InputFileSystemDirectory, OutputFileSystemDirectory, OutputMemoryTerminal
 6from aspose.tex.presentation.image import ImageDevice, PngSaveOptions
 7
 8# Set these paths to your LaTeX document and output directory.
 9input_file = Path(os.environ.get("ASPOSE_TEX_INPUT_FILE", "hello-world.ltx")).resolve()
10output_dir = Path(os.environ.get("ASPOSE_TEX_OUTPUT_DIR", "output")).resolve()
11if not input_file.is_file():
12    raise FileNotFoundError(input_file)
13output_dir.mkdir(parents=True, exist_ok=True)
14
15# Use the Object LaTeX format and resolve additional inputs beside the main file.
16options = TeXOptions.console_app_options(TeXConfig.object_latex)
17options.input_working_directory = InputFileSystemDirectory(str(input_file.parent))
18options.output_working_directory = OutputFileSystemDirectory(str(output_dir))
19options.interaction = Interaction.NONSTOP_MODE
20options.terminal_out = OutputMemoryTerminal()
21save_options = PngSaveOptions()
22save_options.device_writes_images = False
23options.save_options = save_options
24device = ImageDevice(True)
25job_result = TeXJob(str(input_file), device, options).run()
26
27# Write the returned PNG page bytes yourself.
28for index, page_bytes in enumerate(device.result, start=1):
29    (output_dir / f"page-{index}.png").write_bytes(page_bytes)

Das Beispiel setzt device_writes_images = False auf PngSaveOptions, bevor es die Optionen options.save_options zuweist. Die zurückgegebenen Seitenbytes werden als page-1.png, page-2.png usw. gespeichert. Das Gerät erzeugt daher keine doppelten PNG-Dateien.

Zu den Eingabemöglichkeiten

Wenn unsere Haupteingabedatei Abhängigkeiten erfordert, wie etwa Pakete, die nicht im grundlegenden LaTeX-System enthalten sind, oder unterstützte Pakete, müssen wir die Option required_input_directory auf ähnliche Weise festlegen, wie wir die Option output_working_directory festlegen Platzieren Sie die Abhängigkeiten in diesem Verzeichnis. Die Abhängigkeiten können je nach Bedarf in Unterverzeichnissen organisiert werden. Wenn wir unsere Dateien in den Satzprozess einbeziehen möchten, beispielsweise externe Grafikdateien, müssen wir auch das input_working_directory auf den Speicherort dieser Dateien festlegen. Wir können die Haupteingabedatei auch im Eingabeverzeichnis platzieren und den relativen Pfad an den Konstruktor TeXJob angeben oder überhaupt keinen Pfad angeben, wenn sich die Haupteingabedatei im Stammverzeichnis befindet. Es gibt auch weitere Details zum Eingabeverzeichniskonzept in Aspose.TeX und den bereitgestellten Implementierungen, die beschrieben werden.

Erfahren Sie auch die anderen TeX-Joboptionen hier.

Sie können auch die kostenlose Web-App für die Konvertierung von LaTeX in PNG erkunden, die mit der Aspose.TeX für .NET API entwickelt wurde.

Im Folgenden erklären wir kurz die Konvertierung von LaTeX in andere unterstützte Rasterbildformate, ohne zu sehr ins Detail zu gehen, da es keine wesentlichen Unterschiede gibt. Die einzige Variation liegt im Typ der Eigenschaft save_options in den Konvertierungsoptionen.

Konvertieren von LaTeX in JPG

 1# Convert LaTeX to JPEG.
 2import os
 3from pathlib import Path
 4from aspose.tex import Interaction, TeXConfig, TeXJob, TeXOptions
 5from aspose.tex.io import InputFileSystemDirectory, OutputFileSystemDirectory, OutputMemoryTerminal
 6from aspose.tex.presentation.image import ImageDevice, JpegSaveOptions
 7
 8# Set these paths to your LaTeX document and output directory.
 9input_file = Path(os.environ.get("ASPOSE_TEX_INPUT_FILE", "hello-world.ltx")).resolve()
10output_dir = Path(os.environ.get("ASPOSE_TEX_OUTPUT_DIR", "output")).resolve()
11if not input_file.is_file():
12    raise FileNotFoundError(input_file)
13output_dir.mkdir(parents=True, exist_ok=True)
14
15# Use the Object LaTeX format and resolve additional inputs beside the main file.
16options = TeXOptions.console_app_options(TeXConfig.object_latex)
17options.input_working_directory = InputFileSystemDirectory(str(input_file.parent))
18options.output_working_directory = OutputFileSystemDirectory(str(output_dir))
19options.interaction = Interaction.NONSTOP_MODE
20options.terminal_out = OutputMemoryTerminal()
21options.save_options = JpegSaveOptions()
22device = ImageDevice(True)
23job_result = TeXJob(str(input_file), device, options).run()

Sie können auch die kostenlose Web-App für die Konvertierung von LaTeX in JPG erkunden, die mit der Aspose.TeX für .NET API entwickelt wurde.

Konvertieren von LaTeX in TIFF

 1# Convert LaTeX to TIFF.
 2import os
 3from pathlib import Path
 4from aspose.tex import Interaction, TeXConfig, TeXJob, TeXOptions
 5from aspose.tex.io import InputFileSystemDirectory, OutputFileSystemDirectory, OutputMemoryTerminal
 6from aspose.tex.presentation.image import ImageDevice, TiffSaveOptions
 7
 8# Set these paths to your LaTeX document and output directory.
 9input_file = Path(os.environ.get("ASPOSE_TEX_INPUT_FILE", "hello-world.ltx")).resolve()
10output_dir = Path(os.environ.get("ASPOSE_TEX_OUTPUT_DIR", "output")).resolve()
11if not input_file.is_file():
12    raise FileNotFoundError(input_file)
13output_dir.mkdir(parents=True, exist_ok=True)
14
15# Use the Object LaTeX format and resolve additional inputs beside the main file.
16options = TeXOptions.console_app_options(TeXConfig.object_latex)
17options.input_working_directory = InputFileSystemDirectory(str(input_file.parent))
18options.output_working_directory = OutputFileSystemDirectory(str(output_dir))
19options.interaction = Interaction.NONSTOP_MODE
20options.terminal_out = OutputMemoryTerminal()
21options.save_options = TiffSaveOptions()
22device = ImageDevice(True)
23job_result = TeXJob(str(input_file), device, options).run()

Sie können auch die kostenlose Web-App für die Konvertierung von LaTeX in TIFF erkunden, die mit der Aspose.TeX für .NET API entwickelt wurde.

Konvertieren von LaTeX in BMP

 1# Convert LaTeX to BMP.
 2import os
 3from pathlib import Path
 4from aspose.tex import Interaction, TeXConfig, TeXJob, TeXOptions
 5from aspose.tex.io import InputFileSystemDirectory, OutputFileSystemDirectory, OutputMemoryTerminal
 6from aspose.tex.presentation.image import ImageDevice, BmpSaveOptions
 7
 8# Set these paths to your LaTeX document and output directory.
 9input_file = Path(os.environ.get("ASPOSE_TEX_INPUT_FILE", "hello-world.ltx")).resolve()
10output_dir = Path(os.environ.get("ASPOSE_TEX_OUTPUT_DIR", "output")).resolve()
11if not input_file.is_file():
12    raise FileNotFoundError(input_file)
13output_dir.mkdir(parents=True, exist_ok=True)
14
15# Use the Object LaTeX format and resolve additional inputs beside the main file.
16options = TeXOptions.console_app_options(TeXConfig.object_latex)
17options.input_working_directory = InputFileSystemDirectory(str(input_file.parent))
18options.output_working_directory = OutputFileSystemDirectory(str(output_dir))
19options.interaction = Interaction.NONSTOP_MODE
20options.terminal_out = OutputMemoryTerminal()
21options.save_options = BmpSaveOptions()
22device = ImageDevice(True)
23job_result = TeXJob(str(input_file), device, options).run()

Sie können auch die kostenlose Web-App für die Konvertierung von LaTeX in BMP erkunden, die mit der Aspose.TeX für .NET API entwickelt wurde.

Konvertieren von LaTeX in SVG

Ein weiteres unterstütztes Zielformat ist SVG. Skalierbare Vektorgrafiken (SVG) ist ein XML-basiertes Vektorbildformat, das zur Definition zweidimensionaler Grafiken verwendet wird. Es unterstützt Interaktivität und Animation.

SVG-Bilder werden in XML-Textdateien gespeichert und in einem Vektorgrafikformat definiert. Dies bedeutet, dass SVG-Bilder ohne Qualitätsverlust in der Größe skaliert werden können und SVG-Dateien selbst durchsucht, indiziert, mit Skripts versehen und komprimiert werden können. Die XML-Textdateien können mit Texteditoren oder Vektorgrafik-Editoren erstellt und bearbeitet werden und können von den am häufigsten verwendeten Webbrowsern gerendert werden.

Die Aspose.SVG API bietet eine Reihe von Funktionen für die Arbeit mit SVG, wie zum Beispiel das Erstellen, Laden, Bearbeiten und Konvertieren von SVG-Dokumenten.

Das Konvertieren von LaTeX in SVG ist genauso einfach wie das Konvertieren in Rasterbildformate, mit dem einzigen Unterschied, dass save_options auf eine Instanz der Klasse SvgSaveOptions gesetzt werden muss und die Das Gerät muss in eine Instanz der Klasse SvgDevice geändert werden.

 1# Convert LaTeX to SVG.
 2import os
 3from pathlib import Path
 4from aspose.tex import Interaction, TeXConfig, TeXJob, TeXOptions
 5from aspose.tex.io import InputFileSystemDirectory, OutputFileSystemDirectory, OutputMemoryTerminal
 6from aspose.tex.presentation.svg import SvgDevice, SvgSaveOptions
 7
 8# Set these paths to your LaTeX document and output directory.
 9input_file = Path(os.environ.get("ASPOSE_TEX_INPUT_FILE", "hello-world.ltx")).resolve()
10output_dir = Path(os.environ.get("ASPOSE_TEX_OUTPUT_DIR", "output")).resolve()
11if not input_file.is_file():
12    raise FileNotFoundError(input_file)
13output_dir.mkdir(parents=True, exist_ok=True)
14
15# Use the Object LaTeX format and resolve additional inputs beside the main file.
16options = TeXOptions.console_app_options(TeXConfig.object_latex)
17options.input_working_directory = InputFileSystemDirectory(str(input_file.parent))
18options.output_working_directory = OutputFileSystemDirectory(str(output_dir))
19options.interaction = Interaction.NONSTOP_MODE
20options.terminal_out = OutputMemoryTerminal()
21options.save_options = SvgSaveOptions()
22device = SvgDevice()
23job_result = TeXJob(str(input_file), device, options).run()

Sie können auch die kostenlose Web-App für die Konvertierung von LaTeX in SVG erkunden, die mit der Aspose.TeX für .NET API entwickelt wurde.