AsposeTeX para Python – Preguntas frecuentes



P: ¿Qué es AsposeTeX para Python?

R: AsposeTeXforPython es una API pura de Python (construida sobre la biblioteca AsposeTeX .NET a través de pythonnet) que procesa y convierte documentos LaTeX/TeX a PDF, XPS, SVG, PNG, JPEG, BMP, TIFF y otros formatos de imagen sin requerir ninguna distribución TeX externa. Se ejecuta durante el proceso y es adecuado para servicios web, aplicaciones de escritorio y generadores de informes automatizados.


P: ¿Cómo instalo AsposeTeXforPython?

R: Ejecute pip install aspose-tex-python-net. El paquete incluye automáticamente el tiempo de ejecución pythonnet requerido. Instálelo dentro de cualquier entorno virtual (Windows, Linux, macOS) con Python3.8 o posterior. Verifique la instalación con:

1import aspose.tex as tex
2print(tex.__version__)



P: ¿Necesito una distribución TeX local (MiKTeX, TeXLive, etc.)?

R: No. Toda la lógica de análisis y renderizado está integrada en AsposeTeX, por lo que nunca necesitará un motor TeX externo. La biblioteca incluye más de 300 paquetes principales de LaTeX y archivos de clases comunes listos para usar.



P: ¿Cómo puedo convertir un archivo .tex a PDF con unas pocas líneas de código?

R: Cree un TeXJob con la configuración Object LaTeX, PdfSaveOptions y PdfDevice. Establezca ASPOSE_TEX_INPUT_FILE en su archivo LaTeX y ASPOSE_TEX_OUTPUT_DIR en el directorio de salida, o edite las rutas del ejemplo. Los valores predeterminados son hello-world.ltx y output. Aplique primero una licencia. Los archivos de entrada adicionales se buscan junto al documento principal y el procesamiento no es interactivo. Licencias

 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()

El nombre de salida sigue al de entrada: hello-world.ltx produce hello-world.pdf. LaTeX → PDF

P: ¿Qué formatos de salida puede generar AsposeTeXforPython?

R: PDF, XPS, SVG, PNG, JPEG, BMP y TIFF. Cada formato se puede controlar mediante objetos SaveOptions específicos (por ejemplo, PdfSaveOptions, PngSaveOptions, SvgSaveOptions).



P: ¿Cómo incrusto fuentes personalizadas en el PDF generado?

R: Las fuentes se seleccionan en el documento TeX o LaTeX y sus paquetes. Consulte los recursos en Paquetes LaTeX externos. La propiedad subset_fonts de PdfSaveOptions controla si solo se incrustan los glifos utilizados; no selecciona una fuente personalizada. Consulte Subconjuntos de fuentes para ver un ejemplo XPS completo con la misma opción.

P: ¿Qué paquetes y clases de LaTeX son compatibles de fábrica?

R: La biblioteca incluye paquetes y clases LaTeX comunes. Consulte la lista de paquetes integrados. El ejemplo de paquetes externos proporciona las fuentes de pgfplots mediante required_input_directory.

P: ¿Cómo puedo utilizar un archivo .sty o de clase de terceros que no esté integrado?

R: Establezca TeXOptions.required_input_directory en un InputFileSystemDirectory que contenga los archivos del paquete. El ejemplo completo carga fancybox.sty desde ExternalLaTeXPackages/packages y convierte required-input-fs.tex a PNG. Para archivos ZIP y restricciones de compatibilidad, consulte Paquetes LaTeX externos.

Aplique primero una licencia. Establezca ASPOSE_TEX_INPUT_DIR en la carpeta que contiene ExternalLaTeXPackages, con los dos archivos .tex y el subdirectorio packages (predeterminada: input). Establezca ASPOSE_TEX_OUTPUT_DIR en la carpeta de salida (predeterminada: 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()


P: ¿Cuáles son las principales limitaciones del motor?

R:

LimitaciónDetalles
Escape de shell (\write18)Deshabilitado por seguridad.
Externalización completa de TikZNo compatible; la mayoría de los gráficos TikZ se renderizan en proceso, pero los dibujos extremadamente complejos pueden fallar.
Cobertura de fuentes UnicodeSolo las fuentes TrueType/OpenType con conjuntos de glifos completos son totalmente compatibles; las fuentes Type1 antiguas pueden requerir conversión.
Documentos muy grandes (más de 500 páginas)Puede consumir mucha memoria; considere la posibilidad de transmitir páginas con Document.save(output_stream, options).



P: ¿Cómo aplico una clave de licencia y qué modelos de licencia están disponibles?

R: Aplique la licencia antes de utilizar otras clases de Aspose.TeX. Establezca ASPOSE_TEX_PYTHON_NET_LICENSE_PATH con la ruta de la licencia o coloque Aspose.TeX.Python-net.lic en el directorio de trabajo.

 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)

Consulte Licencias para ver ejemplos de licencias desde archivos, flujos y Metered, así como las limitaciones de evaluación.

P: ¿La biblioteca es segura para subprocesos para conversiones paralelas?

R: Sí, siempre que cada hilo cree su propia instancia de “Documento”. Los objetos estáticos como la “Licencia” deben configurarse antes de que comience cualquier trabajo paralelo.



P: ¿Qué versión de tiempo de ejecución de .NET requiere AsposeTeXforPython?

R: El paquete se envía con los binarios de tiempo de ejecución .NET6 (x64). Pythonnet los carga automáticamente en la primera importación; no es necesario instalar .NET manualmente.


P: ¿Cómo puedo configurar el tamaño de página, la orientación y los DPI para salidas rasterizadas?

R: Defina el tamaño y la orientación de la página en el código LaTeX. Por ejemplo, guarde este documento A4 horizontal como landscape.ltx:

1\documentclass{article}
2\usepackage[a4paper,landscape]{geometry}
3\begin{document}
4Hello, World!
5\end{document}

Establezca PngSaveOptions.resolution antes de asignar las opciones de guardado al trabajo. Este ejemplo usa 300 DPI. Establezca ASPOSE_TEX_INPUT_FILE en landscape.ltx y ASPOSE_TEX_OUTPUT_DIR en su directorio de salida, o use las rutas predeterminadas:

 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()

El resultado es landscape.png, de aproximadamente 3508 × 2480 píxeles.

P: ¿Puedo renderizar LaTeX directamente desde una cadena o una secuencia en memoria?

R: Codifique un documento LaTeX completo en un flujo binario BytesIO y páselo a TeXJob con TeXConfig.object_latex. Mantenga el flujo abierto durante el trabajo. Resultado: texput.xps y texput.log. Establezca ASPOSE_TEX_OUTPUT_DIR en el directorio de salida (predeterminado: output). Aplique primero una licencia. 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()


P: ¿Dónde puedo encontrar documentación oficial, ejemplos de código y canales de soporte?

R: Consulte los siguientes recursos:

Todos los ejemplos están disponibles tanto en Python como en C#; El código C# se puede traducir directamente gracias a pythonnet.