AsposeTeXforPython – FAQ
F: Was ist AsposeTeXforPython?
A: AsposeTeXforPython ist eine reine Python-API (basierend auf der AsposeTeX .NET-Bibliothek über pythonnet), die LaTeX/TeX-Dokumente in PDF, XPS, SVG, PNG, JPEG, BMP, TIFF und andere Bildformate rendert und konvertiert, ohne dass eine externe TeX-Verteilung erforderlich ist. Es läuft prozessintern und eignet sich für Webdienste, Desktop-Apps und automatisierte Berichtsgeneratoren.
F: Wie installiere ich AsposeTeXforPython?
A: Führen Sie „pip install aspose-tex-python-net“ aus. Das Paket bündelt die erforderliche „Pythonnet“-Laufzeit automatisch. Installieren Sie es in einer beliebigen virtuellen Umgebung (Windows, Linux, macOS) mit Python3.8 oder höher. Überprüfen Sie die Installation mit:
1import aspose.tex as tex
2print(tex.__version__)F: Benötige ich eine lokale TeX-Distribution (MiKTeX, TeXLive usw.)?
A: Nein. Die gesamte Parsing- und Rendering-Logik ist in AsposeTeX integriert, sodass Sie nie eine externe TeX-Engine benötigen. Die Bibliothek umfasst über 300 LaTeX-Kernpakete und gängige Klassendateien sofort einsatzbereit.
F: Wie kann ich eine „.tex“-Datei mit ein paar Codezeilen in PDF konvertieren?
A: Erstellen Sie einen TeXJob mit der Object-LaTeX-Konfiguration, PdfSaveOptions und PdfDevice. 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 PDF.
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.pdf import PdfDevice, PdfSaveOptions
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 = PdfSaveOptions()
22device = PdfDevice()
23job_result = TeXJob(str(input_file), device, options).run()Der Ausgabename folgt dem Eingabenamen: Aus hello-world.ltx wird hello-world.pdf.
LaTeX → PDF
F: Welche Ausgabeformate kann AsposeTeXforPython generieren?
A: PDF, XPS, SVG, PNG, JPEG, BMP und TIFF. Jedes Format kann über bestimmte „SaveOptions“-Objekte gesteuert werden (z. B. „PdfSaveOptions“, „PngSaveOptions“, „SvgSaveOptions“).
F: Wie bette ich benutzerdefinierte Schriftarten in das generierte PDF ein?
A: Schriftarten werden im TeX- oder LaTeX-Dokument und seinen Paketen ausgewählt. Für Paketressourcen siehe
externe LaTeX-Pakete. Die Eigenschaft
subset_fonts von PdfSaveOptions legt fest, ob nur verwendete Glyphen eingebettet werden; sie wählt keine benutzerdefinierte Schriftart aus. Ein vollständiges XPS-Beispiel mit derselben Option finden Sie unter
Schriftartuntergruppen.
F: Welche LaTeX-Pakete und -Klassen werden standardmäßig unterstützt?
A: Die Bibliothek enthält gängige LaTeX-Pakete und Klassen. Den Umfang zeigt die
Liste eingebetteter Pakete. Das
Beispiel für externe Pakete stellt die Quellen von pgfplots über required_input_directory bereit.
F: Wie kann ich eine „.sty“- oder Klassendatei eines Drittanbieters verwenden, die nicht integriert ist?
A: Setzen Sie TeXOptions.required_input_directory auf ein InputFileSystemDirectory mit den benötigten Paketdateien. Das vollständige Beispiel lädt fancybox.sty aus ExternalLaTeXPackages/packages und konvertiert required-input-fs.tex nach PNG. Informationen zu ZIP-Archiven und Einschränkungen finden Sie unter
externe LaTeX-Pakete.
Wenden Sie zuerst eine
Lizenz an. ASPOSE_TEX_INPUT_DIR muss auf den Ordner zeigen, der ExternalLaTeXPackages mit den beiden .tex-Dateien und dem Unterverzeichnis packages enthält (Standard: input). Setzen Sie ASPOSE_TEX_OUTPUT_DIR auf den Ausgabeordner (Standard: output).
1# Load an external LaTeX package from a directory.
2import os
3from pathlib import Path
4from os import path
5from io import BytesIO
6from aspose.tex import Interaction, TeXConfig, TeXJob, TeXOptions
7from aspose.tex.io import InputFileSystemDirectory, InputZipDirectory, OutputFileSystemDirectory, OutputMemoryTerminal
8from aspose.tex.presentation.image import ImageDevice, PngSaveOptions
9
10output_dir = Path(os.environ.get("ASPOSE_TEX_OUTPUT_DIR", "output")).resolve()
11output_dir.mkdir(parents=True, exist_ok=True)
12input_dir = Path(os.environ.get("ASPOSE_TEX_INPUT_DIR", "input")).resolve() / "ExternalLaTeXPackages"
13# Create conversion options for Object LaTeX format upon Object TeX engine extension.
14options = TeXOptions.console_app_options(TeXConfig.object_latex)
15options.interaction = Interaction.NONSTOP_MODE
16options.terminal_out = OutputMemoryTerminal()
17# Specify a file system working directory for the output.
18options.output_working_directory = OutputFileSystemDirectory(str(output_dir))
19# Specify a file system working directory for the required input.
20# The directory containing packages may be located anywhere.
21options.required_input_directory = InputFileSystemDirectory(path.join(str(input_dir), "packages"))
22# Initialize the options for saving in PNG format.
23options.save_options = PngSaveOptions()
24# Run LaTeX to PNG conversion.
25TeXJob(path.join(str(input_dir), "required-input-fs.tex"), ImageDevice(True), options).run()F: Was sind die Haupteinschränkungen der Engine?
A:
| Einschränkung | Details |
|---|---|
Shell-Escape (\write18) | Aus Sicherheitsgründen deaktiviert. |
| Vollständige TikZ-Externalisierung | Nicht unterstützt; die meisten TikZ-Grafiken werden im Prozess gerendert, aber extrem komplexe Zeichnungen können fehlschlagen. |
| Unicode-Schriftabdeckung | Nur TrueType-/OpenType-Schriften mit vollständigen Glyphensätzen werden vollständig unterstützt; ältere Type1-Schriften müssen möglicherweise konvertiert werden. |
| Sehr große Dokumente (>500 Seiten) | Können viel Speicherplatz beanspruchen; erwägen Sie, Seiten mit Document.save(output_stream, options) zu streamen. |
F: Wie wende ich einen Lizenzschlüssel an und welche Lizenzmodelle sind verfügbar?
A: Wenden Sie die Lizenz an, bevor Sie andere Aspose.TeX-Klassen verwenden. Setzen Sie ASPOSE_TEX_PYTHON_NET_LICENSE_PATH auf den Lizenzpfad oder legen Sie Aspose.TeX.Python-net.lic im Arbeitsverzeichnis ab.
1# Apply a license from a file before using other Aspose.TeX classes.
2import os
3from aspose.tex import License
4
5# Set this environment variable, or place the license in the working directory.
6license_path = os.environ.get(
7 "ASPOSE_TEX_PYTHON_NET_LICENSE_PATH", "Aspose.TeX.Python-net.lic"
8)
9license = License()
10license.set_license(license_path)Beispiele für die Lizenzierung per Datei, Stream und Metered sowie Einschränkungen der Testversion finden Sie unter Lizenzierung.
F: Ist die Bibliothek threadsicher für parallele Konvertierungen?
A: Ja, vorausgesetzt, jeder Thread erstellt seine eigene „Dokument“-Instanz. Statische Objekte wie die „Lizenz“ müssen festgelegt werden, bevor parallele Arbeiten gestartet werden.
F: Welche .NET-Laufzeitversion benötigt AsposeTeXforPython?
A: Das Paket wird mit den Laufzeitbinärdateien .NET6 (x64) geliefert. Sie werden beim ersten Import automatisch von Pythonnet geladen; Sie müssen .NET nicht manuell installieren.
F: Wie kann ich Seitengröße, Ausrichtung und DPI für Rasterausgaben festlegen?
A: Legen Sie Seitengröße und Ausrichtung im LaTeX-Quelltext fest. Speichern Sie beispielsweise dieses A4-Dokument im Querformat als landscape.ltx:
1\documentclass{article}
2\usepackage[a4paper,landscape]{geometry}
3\begin{document}
4Hello, World!
5\end{document}Setzen Sie PngSaveOptions.resolution, bevor Sie die Speicheroptionen dem Auftrag zuweisen. Das Beispiel verwendet 300 DPI. Setzen Sie ASPOSE_TEX_INPUT_FILE auf landscape.ltx und ASPOSE_TEX_OUTPUT_DIR auf das Ausgabeverzeichnis, oder verwenden Sie die Standardpfade:
1# Convert an A4 landscape LaTeX document to PNG at 300 DPI.
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", "landscape.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()
21# Page size and orientation are defined in the LaTeX input (geometry package).
22# Set the raster resolution in dots per inch.
23save_options = PngSaveOptions()
24save_options.resolution = 300
25options.save_options = save_options
26device = ImageDevice(True)
27job_result = TeXJob(str(input_file), device, options).run()Das Ergebnis ist landscape.png mit ungefähr 3508 × 2480 Pixeln.
F: Kann ich LaTeX direkt aus einem String oder einem In-Memory-Stream rendern?
A: Kodieren Sie ein vollständiges LaTeX-Dokument in einen binären BytesIO-Stream und übergeben Sie ihn an TeXJob mit TeXConfig.object_latex. Halten Sie den Stream während des Auftrags offen. Ergebnis: texput.xps und texput.log. Setzen Sie ASPOSE_TEX_OUTPUT_DIR auf das Ausgabeverzeichnis (Standard: output). Wenden Sie zuerst eine Lizenz an.
Licensing.
1# Render LaTeX supplied as a binary in-memory stream to XPS.
2import os
3from pathlib import Path
4from aspose.tex import Interaction, TeXConfig, TeXJob, TeXOptions
5from io import BytesIO
6from aspose.tex.io import OutputFileSystemDirectory, OutputMemoryTerminal
7from aspose.tex.presentation.xps import XpsDevice
8
9output_dir = Path(os.environ.get("ASPOSE_TEX_OUTPUT_DIR", "output")).resolve()
10output_dir.mkdir(parents=True, exist_ok=True)
11
12options = TeXOptions.console_app_options(TeXConfig.object_latex)
13options.interaction = Interaction.NONSTOP_MODE
14options.output_working_directory = OutputFileSystemDirectory(str(output_dir))
15options.terminal_out = OutputMemoryTerminal()
16latex_source = r"\documentclass{article} \begin{document} Hello, World! \end{document}"
17device = XpsDevice()
18with BytesIO(latex_source.encode("ascii")) as input_stream:
19 job_result = TeXJob(input_stream, device, options).run()F: Wo finde ich offizielle Dokumentation, Codebeispiele und Supportkanäle?
A: Sehen Sie sich die nächsten Ressourcen an:
- Offizielle Dokumentation
- Erste Schritte
- Codebeispiele und GitHub-Gists
- Supportforum
- Issue Tracker (privat für Kunden) – Wird nach dem Kauf bereitgestellt
Alle Beispiele sind sowohl in Python als auch in C# verfügbar; Der C#-Code kann dank Pythonnet direkt übersetzt werden.