AsposeTeXforPython – Domande frequenti
D: Cos’è AsposeTeXforPython?
R: AsposeTeXforPython è un’API Python pura (creata sulla libreria AsposeTeX .NET tramite pythonnet) che esegue il rendering e converte documenti LaTeX/TeX in PDF, XPS, SVG, PNG, JPEG, BMP, TIFF e altri formati di immagine senza richiedere alcuna distribuzione TeX esterna. Viene eseguito in-process ed è adatto per servizi Web, app desktop e generatori di report automatizzati.
D: Come installo AsposeTeXforPython?
R: Esegui pip install aspose-tex-python-net. Il pacchetto raggruppa automaticamente il runtime pythonnet richiesto. Installalo all’interno di qualsiasi ambiente virtuale (Windows, Linux, macOS) con Python 3.8 o successivo. Verificare l’installazione con:
1import aspose.tex as tex
2print(tex.__version__)D: Ho bisogno di una distribuzione TeX locale (MiKTeX, TeXLive, ecc.)?
R: No. Tutta la logica di analisi e rendering è integrata in AsposeTeX, quindi non è mai necessario un motore TeX esterno. La libreria include oltre 300 pacchetti LaTeX principali e file di classi comuni pronti all’uso.
D: Come posso convertire un file .tex in PDF con poche righe di codice?
R: Creare un TeXJob con la configurazione Object LaTeX, PdfSaveOptions e PdfDevice. Impostare ASPOSE_TEX_INPUT_FILE sul file LaTeX e ASPOSE_TEX_OUTPUT_DIR sulla directory di output, oppure modificare i percorsi nell’esempio. I valori predefiniti sono hello-world.ltx e output. Applicare prima una licenza. I file di input aggiuntivi vengono cercati accanto al documento principale; l’elaborazione non è interattiva.
Licenze
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()Il nome di output segue quello di input: hello-world.ltx produce hello-world.pdf.
LaTeX → PDF
D: Quali formati di output può generare AsposeTeXforPython?
R: PDF, XPS, SVG, PNG, JPEG, BMP e TIFF. Ogni formato può essere controllato tramite oggetti SaveOptions specifici (ad esempio, PdfSaveOptions, PngSaveOptions, SvgSaveOptions).
D: Come faccio a incorporare caratteri personalizzati nel PDF generato?
R: I caratteri vengono selezionati nel documento TeX o LaTeX e nei suoi pacchetti. Per le risorse, consultare i
pacchetti LaTeX esterni. La proprietà
subset_fonts di PdfSaveOptions controlla se incorporare solo i glifi utilizzati; non seleziona un carattere personalizzato. Consultare i
sottoinsiemi di caratteri per un esempio XPS completo con la stessa opzione.
D: Quali pacchetti e classi LaTeX sono supportati immediatamente?
R: La libreria include pacchetti e classi LaTeX comuni. Consultare l’
elenco dei pacchetti incorporati. L’
esempio di pacchetti esterni fornisce i sorgenti di pgfplots tramite required_input_directory.
D: Come posso utilizzare un file .sty o di classe di terze parti che non sia integrato?
R: Impostare TeXOptions.required_input_directory su un InputFileSystemDirectory contenente i file del pacchetto. L’esempio completo carica fancybox.sty da ExternalLaTeXPackages/packages e converte required-input-fs.tex in PNG. Per gli archivi ZIP e i limiti di compatibilità, consultare i
pacchetti LaTeX esterni.
Applicare prima una
licenza. Impostare ASPOSE_TEX_INPUT_DIR sulla cartella contenente ExternalLaTeXPackages, con i due file .tex e la sottocartella packages (predefinita: input). Impostare ASPOSE_TEX_OUTPUT_DIR sulla cartella di output (predefinita: 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()D: Quali sono i principali limiti del motore?
R:
| Limitazione | Dettagli |
|---|---|
Shell escape (\write18) | Disabilitato per motivi di sicurezza. |
| Esternalizzazione completa di TikZ | Non supportato; la maggior parte della grafica TikZ viene renderizzata in-process, ma i disegni estremamente complessi potrebbero non funzionare. |
| Copertura dei font Unicode | Sono completamente supportati solo i font TrueType/OpenType con set di glifi completi; i font Type1 legacy potrebbero richiedere la conversione. |
| Documenti molto grandi (>500 pagine) | Possono consumare molta memoria; si consiglia di eseguire lo streaming delle pagine con Document.save(output_stream, options). |
D: Come posso applicare una chiave di licenza e quali modelli di licenza sono disponibili?
R: Applicare la licenza prima di utilizzare le altre classi Aspose.TeX. Impostare ASPOSE_TEX_PYTHON_NET_LICENSE_PATH sul percorso della licenza oppure collocare Aspose.TeX.Python-net.lic nella directory di lavoro.
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)Per esempi di licenze da file, da flusso e Metered e per i limiti della versione di valutazione, consultare
Licenze.
D: La libreria è thread-safe per le conversioni parallele?
R: Sì, a condizione che ogni thread crei la propria istanza “Document”. Gli oggetti statici come la “Licenza” devono essere impostati prima che inizi qualsiasi lavoro parallelo.
D: Quale versione runtime .NET richiede AsposeTeXforPython?
R: Il pacchetto viene fornito con i file binari runtime .NET6 (x64). Vengono caricati automaticamente da Pythonnet alla prima importazione; non è necessario installare .NET manualmente.
D: Come posso impostare le dimensioni della pagina, l’orientamento e i DPI per gli output raster?
R: Definire dimensioni e orientamento della pagina nel sorgente LaTeX. Ad esempio, salvare questo documento A4 orizzontale come landscape.ltx:
1\documentclass{article}
2\usepackage[a4paper,landscape]{geometry}
3\begin{document}
4Hello, World!
5\end{document}Impostare PngSaveOptions.resolution prima di assegnare le opzioni di salvataggio al lavoro. Questo esempio usa 300 DPI. Impostare ASPOSE_TEX_INPUT_FILE su landscape.ltx e ASPOSE_TEX_OUTPUT_DIR sulla directory di output, oppure usare i percorsi predefiniti:
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()Il risultato è landscape.png, di circa 3508 × 2480 pixel.
D: Posso eseguire il rendering di LaTeX direttamente da una stringa o da un flusso in memoria?
R: Codificare un documento LaTeX completo in un flusso binario BytesIO e passarlo a TeXJob con TeXConfig.object_latex. Mantenere aperto il flusso durante il lavoro. Risultato: texput.xps e texput.log. Impostare ASPOSE_TEX_OUTPUT_DIR sulla directory di output (predefinita: output). Applicare prima una licenza.
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()D: Dove posso trovare documentazione ufficiale, esempi di codice e canali di supporto?
R: Controlla le prossime risorse:
- Documentazione ufficiale
- Guida introduttiva
- Esempi di codice e sintesi di GitHub
- Forum di supporto
- Tracker dei problemi (privato per i clienti): fornito dopo l’acquisto
Tutti gli esempi sono disponibili sia in Python che in C#; il codice C# può essere tradotto direttamente grazie a pythonnet.