AsposeTeXforPython – FAQ
Q : Qu’est-ce qu’AsposeTeXforPython ?
R : AsposeTeXforPython est une API purement Python (construite sur la bibliothèque AsposeTeX .NET via pythonnet) qui restitue et convertit les documents LaTeX/TeX en PDF, XPS, SVG, PNG, JPEG, BMP, TIFF et d’autres formats d’image sans nécessiter de distribution TeX externe. Il s’exécute en cours de processus et convient aux services Web, aux applications de bureau et aux générateurs de rapports automatisés.
Q : Comment installer AsposeTeXforPython ?
R : Exécutez pip install aspose-tex-python-net. Le package regroupe automatiquement le runtime « pythonnet » requis. Installez-le dans n’importe quel environnement virtuel (Windows, Linux, macOS) avec Python3.8 ou version ultérieure. Vérifiez l’installation avec :
1import aspose.tex as tex
2print(tex.__version__)Q : Ai-je besoin d’une distribution TeX locale (MiKTeX, TeXLive, etc.) ?
R : Non. Toute la logique d’analyse et de rendu est intégrée à AsposeTeX, vous n’avez donc jamais besoin d’un moteur TeX externe. La bibliothèque comprend plus de 300 packages LaTeX de base et des fichiers de classe courants prêts à l’emploi.
Q : Comment puis-je convertir un fichier .tex en PDF avec quelques lignes de code ?
R : Créez un TeXJob avec la configuration Object LaTeX, PdfSaveOptions et PdfDevice. Définissez ASPOSE_TEX_INPUT_FILE sur votre fichier LaTeX et ASPOSE_TEX_OUTPUT_DIR sur le répertoire de sortie, ou modifiez les chemins de l’exemple. Les valeurs par défaut sont hello-world.ltx et output. Appliquez d’abord une licence. Les fichiers d’entrée supplémentaires sont recherchés à côté du document principal ; le traitement est non interactif.
Licences
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()Le nom de sortie suit celui de l’entrée : hello-world.ltx produit hello-world.pdf.
LaTeX → PDF
Q : Quels formats de sortie AsposeTeXforPython peut-il générer ?
R : PDF, XPS, SVG, PNG, JPEG, BMP et TIFF. Chaque format peut être contrôlé via des objets SaveOptions spécifiques (par exemple, PdfSaveOptions, PngSaveOptions, SvgSaveOptions).
Q : Comment intégrer des polices personnalisées dans le PDF généré ?
R : Les polices sont sélectionnées dans le document TeX ou LaTeX et ses packages. Pour les ressources, consultez les
packages LaTeX externes. La propriété
subset_fonts de PdfSaveOptions contrôle l’incorporation des seuls glyphes utilisés ; elle ne sélectionne pas une police personnalisée. Consultez les
sous-ensembles de polices pour un exemple XPS complet utilisant la même option.
Q : Quels packages et classes LaTeX sont pris en charge dès le départ ?
R : La bibliothèque inclut des packages et classes LaTeX courants. Consultez la
liste des packages intégrés. L’
exemple de packages externes fournit les sources de pgfplots via required_input_directory.
Q : Comment puis-je utiliser un fichier « .sty » ou un fichier de classe tiers qui n’est pas intégré ?
A : Définissez TeXOptions.required_input_directory sur un InputFileSystemDirectory contenant les fichiers nécessaires. L’exemple complet charge fancybox.sty depuis ExternalLaTeXPackages/packages et convertit required-input-fs.tex en PNG. Pour les archives ZIP et les restrictions de compatibilité, consultez les
packages LaTeX externes.
Appliquez d’abord une
licence. Définissez ASPOSE_TEX_INPUT_DIR sur le dossier contenant ExternalLaTeXPackages, avec les deux fichiers .tex et le sous-dossier packages (par défaut : input). Définissez ASPOSE_TEX_OUTPUT_DIR sur le dossier de sortie (par défaut : 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()Q : Quelles sont les principales limitations du moteur ?
R :
| Limitation | Détails |
|---|---|
Échappement shell (\write18) | Désactivé pour des raisons de sécurité. |
| Externalisation complète de TikZ | Non prise en charge ; la plupart des graphiques TikZ sont rendus en interne, mais les dessins extrêmement complexes peuvent échouer. |
| Couverture des polices Unicode | Seules les polices TrueType/OpenType avec des jeux de glyphes complets sont entièrement prises en charge ; les anciennes polices Type1 peuvent nécessiter une conversion. |
| Documents très volumineux (> 500 pages) | Peuvent consommer une quantité importante de mémoire ; envisagez le flux de pages avec Document.save(output_stream, options). |
Q : Comment puis-je appliquer une clé de licence et quels modèles de licence sont disponibles ?
R : Appliquez la licence avant d’utiliser les autres classes Aspose.TeX. Définissez ASPOSE_TEX_PYTHON_NET_LICENSE_PATH sur le chemin de la licence ou placez Aspose.TeX.Python-net.lic dans le répertoire de travail.
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)Consultez
Licences pour les exemples de licence par fichier, flux et Metered, ainsi que les limitations de la version d’évaluation.
Q : La bibliothèque est-elle thread-safe pour les conversions parallèles ?
R : Oui, à condition que chaque thread crée sa propre instance Document. Les objets statiques tels que la « Licence » doivent être définis avant le début de tout travail parallèle.
Q : De quelle version du runtime .NET AsposeTeXforPython a-t-il besoin ?
R : Le package est livré avec les binaires d’exécution .NET6 (x64). Ils sont chargés automatiquement par pythonnet lors du premier import ; vous n’avez pas besoin d’installer .NET manuellement.
Q : Comment puis-je définir la taille de la page, l’orientation et le DPI pour les sorties raster ?
R : Définissez la taille et l’orientation des pages dans le code LaTeX. Enregistrez par exemple ce document A4 en paysage sous le nom landscape.ltx :
1\documentclass{article}
2\usepackage[a4paper,landscape]{geometry}
3\begin{document}
4Hello, World!
5\end{document}Définissez PngSaveOptions.resolution avant d’affecter les options d’enregistrement au travail. Cet exemple utilise 300 DPI. Définissez ASPOSE_TEX_INPUT_FILE sur landscape.ltx et ASPOSE_TEX_OUTPUT_DIR sur votre répertoire de sortie, ou utilisez les chemins par défaut :
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()Le résultat est landscape.png, d’environ 3508 × 2480 pixels.
Q : Puis-je restituer LaTeX directement à partir d’une chaîne ou d’un flux en mémoire ?
R : Encodez un document LaTeX complet dans un flux binaire BytesIO et transmettez-le à TeXJob avec TeXConfig.object_latex. Gardez le flux ouvert pendant le travail. Résultat : texput.xps et texput.log. Définissez ASPOSE_TEX_OUTPUT_DIR sur le répertoire de sortie (par défaut : output). Appliquez d’abord une licence.
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()Q : Où puis-je trouver la documentation officielle, des exemples de code et des canaux d’assistance ?
R : Consultez les ressources suivantes :
- Documentation officielle
- Guide de démarrage
- Exemples de code et GitHub Gits
- Forum d’assistance
- Issue Tracker (privé pour les clients) - Fourni après l’achat
Tous les exemples sont disponibles en Python et C# ; le code C# peut être directement traduit grâce à pythonnet.