AsposeTeXforPython – Perguntas frequentes



P: O que é AsposeTeXforPython?

R: AsposeTeXforPython é uma API Python pura (construída sobre a biblioteca AsposeTeX .NET via pythonnet) que renderiza e converte documentos LaTeX/TeX em PDF, XPS, SVG, PNG, JPEG, BMP, TIFF e outros formatos de imagem sem exigir qualquer distribuição externa de TeX. Ele é executado em processo e é adequado para serviços Web, aplicativos de desktop e geradores automatizados de relatórios.


P: Como faço para instalar o AsposeTeXforPython?

R: Execute pip install aspose-tex-python-net. O pacote agrupa o tempo de execução pythonnet necessário automaticamente. Instale-o em qualquer ambiente virtual (Windows, Linux, macOS) com Python3.8 ou posterior. Verifique a instalação com:

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



P: Preciso de uma distribuição local do TeX (MiKTeX, TeXLive, etc.)?

R: Não. Toda a lógica de análise e renderização é incorporada ao AsposeTeX, então você nunca precisa de um mecanismo TeX externo. A biblioteca inclui mais de 300 pacotes principais de LaTeX e arquivos de classes comuns prontos para uso.



P: Como posso converter um arquivo .tex em PDF com algumas linhas de código?

R: Crie um TeXJob com a configuração Object LaTeX, PdfSaveOptions e PdfDevice. Defina ASPOSE_TEX_INPUT_FILE como o arquivo LaTeX e ASPOSE_TEX_OUTPUT_DIR como o diretório de saída, ou edite os caminhos do exemplo. Os valores padrão são hello-world.ltx e output. Aplique uma licença antes da conversão. Os arquivos de entrada adicionais são procurados junto ao documento principal; o processamento não é interativo. Licenciamento

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

O nome de saída segue o de entrada: hello-world.ltx gera hello-world.pdf. LaTeX → PDF

P: Quais formatos de saída o AsposeTeXforPython pode gerar?

R: PDF, XPS, SVG, PNG, JPEG, BMP e TIFF. Cada formato pode ser controlado através de objetos SaveOptions específicos (por exemplo, PdfSaveOptions, PngSaveOptions, SvgSaveOptions).

P: Como incorporo fontes personalizadas no PDF gerado?

R: As fontes são selecionadas no documento TeX ou LaTeX e em seus pacotes. Para os recursos, consulte Pacotes LaTeX externos. A propriedade subset_fonts de PdfSaveOptions controla se apenas os glifos utilizados são incorporados; ela não seleciona uma fonte personalizada. Consulte Subconjuntos de fontes para ver um exemplo XPS completo com a mesma opção.

P: Quais pacotes e classes LaTeX são compatíveis imediatamente?

R: A biblioteca inclui pacotes e classes LaTeX comuns. Consulte a lista de pacotes integrados. O exemplo de pacotes externos fornece os arquivos-fonte de pgfplots por meio de required_input_directory.

P: Como posso usar um arquivo .sty ou de classe de terceiros que não esteja integrado?

R: Defina TeXOptions.required_input_directory como um InputFileSystemDirectory contendo os arquivos necessários. O exemplo completo carrega fancybox.sty de ExternalLaTeXPackages/packages e converte required-input-fs.tex para PNG. Para arquivos ZIP e restrições de compatibilidade, consulte Pacotes LaTeX externos.

Aplique primeiro uma licença. Defina ASPOSE_TEX_INPUT_DIR como a pasta que contém ExternalLaTeXPackages, com os dois arquivos .tex e o subdiretório packages (padrão: input). Defina ASPOSE_TEX_OUTPUT_DIR como a pasta de saída (padrão: 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: Quais são as principais limitações do mecanismo?

R:

LimitaçõesDetalhes
Escape da shell (\write18)Desativado por segurança.
Externalização completa do TikZNão suportado; a maioria dos gráficos TikZ são renderizados no mesmo processo, mas desenhos extremamente complexos podem falhar.
Cobertura de tipos de letra UnicodeApenas as fontes TrueType/OpenType com conjuntos completos de glifos são totalmente suportadas; as fontes Type1 legadas podem necessitar de conversão.
Documentos demasiado grandes (>500 páginas)Podem consumir muita memória; considere o streaming de páginas com Document. save(output_stream, options).


P: Como aplico uma chave de licença e quais modelos de licenciamento estão disponíveis?

R: Aplique a licença antes de utilizar outras classes Aspose.TeX. Defina ASPOSE_TEX_PYTHON_NET_LICENSE_PATH com o caminho da licença ou coloque Aspose.TeX.Python-net.lic no diretório de trabalho.

 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 Licenciamento para exemplos de licenças por ficheiro, fluxo e Metered, bem como as limitações da versão de avaliação.

P: A biblioteca é thread-safe para conversões paralelas?

R: Sim, desde que cada thread crie sua própria instância Document. Objetos estáticos como a Licença devem ser definidos antes do início de qualquer trabalho paralelo.


P: Qual versão de tempo de execução do .NET o AsposeTeXforPython exige?

R: O pacote é fornecido com os binários de tempo de execução .NET6 (x64). Eles são carregados automaticamente pelo pythonnet na primeira importação; você não precisa instalar o .NET manualmente.


P: Como posso definir o tamanho da página, a orientação e o DPI para saídas raster?

R: Defina o tamanho e a orientação da página no código LaTeX. Por exemplo, salve este documento A4 em paisagem como landscape.ltx:

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

Defina PngSaveOptions.resolution antes de atribuir as opções de salvamento ao trabalho. Este exemplo usa 300 DPI. Defina ASPOSE_TEX_INPUT_FILE como landscape.ltx e ASPOSE_TEX_OUTPUT_DIR como o diretório de saída, ou use os caminhos padrão:

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

O resultado é landscape.png, com aproximadamente 3508 × 2480 pixels.

P: Posso renderizar LaTeX diretamente de uma string ou de um fluxo na memória?

R: Codifique um documento LaTeX completo em um fluxo binário BytesIO e passe-o a TeXJob com TeXConfig.object_latex. Mantenha o fluxo aberto durante o trabalho. Resultado: texput.xps e texput.log. Defina ASPOSE_TEX_OUTPUT_DIR como o diretório de saída (padrão: output). Aplique uma licença primeiro. 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: Onde posso encontrar documentação oficial, exemplos de código e canais de suporte?

R: Verifique os próximos recursos:

Todos os exemplos estão disponíveis em Python e C#; o código C# pode ser traduzido diretamente graças ao pythonnet.