Látex para imagem | Python via .NET

Aspose.TeX for python nos fornece a capacidade de converter arquivos de LaTeX em vários formatos de imagem raster.

Converter LaTeX em png

Agora, vamos examinar o código Python que oferece a abordagem mais direta para converter o LaTeX em formato PNG em profundidade.

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 PNG.
 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", "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 = PngSaveOptions()
22device = ImageDevice(True)
23job_result = TeXJob(str(input_file), device, options).run()

Para começar, precisamos criar uma instância da classe texoptions usando o método console_app_options () . Não se preocupe com o nome, é apenas o método estático que cria a instância. Este método pega a instância object_latex da classe texconfig, que é perfeita para converter um arquivo de LaTeX. Essa configuração configura o mecanismo Tex Object para carregar o formato LATEX do objeto e estar pronto para processar o arquivo LATEX. O formato LATEX de objeto é essencialmente o mesmo que o formato de LaTeX, mas usa objeto tex primitivas específicas para definir as métricas da página.

A primeira das opções necessárias é output_working_directory, que especifica o local onde a saída TEX será salva. Se estiver interessado, você pode aprender mais informações sobre o conceito do diretório de saída em aspose.tex for python. Neste exemplo em particular, utilizamos a classe outputFilesystemDirectory para gravar a saída em um diretório ou pasta específica.

A segunda opção é uma instância da classe SaveOptions, responsável pelo gerenciamento da conversão do Modelo de Objeto para o formato desejado. Nesse caso, como estamos convertendo LaTeX em PNG, usamos a instância da classe pngSaveOptions, que nos permite especificar a resolução das imagens de saída.

De seguida, criamos uma instância da classe TeXJob. Neste caso, como queremos converter um ficheiro LaTeX armazenado no sistema de ficheiros, utilizamos esta versão do construtor . Precisamos de fornecer o caminho completo para o ficheiro, caso contrário, o motor irá procurá-lo no diretório atual (que é o diretório de trabalho do script) e poderá não o encontrar. No entanto, a extensão .tex pode ser omitida, uma vez que o motor irá anexá-la automaticamente. O segundo argumento do construtor é uma instância da classe Device. Como estamos a converter LaTeX para PNG, trata-se de uma instância da classe ImageDevice, comum a todos os formatos de imagem suportados. Por fim, passamos as opções de conversão preparadas como último argumento.

Agora, tudo o que resta é correr o trabalho.

O exemplo captura a saída do terminal em OutputMemoryTerminal. O diretório de saída também contém um registro .log. Uma conversão bem-sucedida gera um registro semelhante ao seguinte; os dados da versão podem variar:

 1This is ObjectTeX, Version 3.1415926-1.0 (Aspose.TeX 21.8)
 2entering extended mode
 3
 4(<input_directory>\hello-world.ltx
 5LaTeX2e <2011/06/27>
 6(article.cls
 7Document Class: article 2007/10/19 v1.4h Standard LaTeX document class
 8(size10.clo))
 9No file hello-world.aux.
10[1]
11(<output_directory>\hello-world.aux) )
12Output written on hello-world.png (1 page).
13Transcript written on hello-world.log.

Os resultados do trabalho do motor podem ser encontrados no diretório de saída que especificamos. Isso incluirá o arquivo de transcrição e, o mais importante, o (s) arquivo (s) da (s) imagem (s) da imagem de saída principal.

Uma maneira alternativa de escrever o (s) arquivo (s) principal (s) de saída da saída

Existe um método alternativo para obter dados de imagem como uma matriz de matrizes de bytes, onde cada matriz na segunda dimensão representa os dados da imagem para uma página separada.

 1# Convert LaTeX to PNG and save each page from the returned byte arrays.
 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", "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()
21save_options = PngSaveOptions()
22save_options.device_writes_images = False
23options.save_options = save_options
24device = ImageDevice(True)
25job_result = TeXJob(str(input_file), device, options).run()
26
27# Write the returned PNG page bytes yourself.
28for index, page_bytes in enumerate(device.result, start=1):
29    (output_dir / f"page-{index}.png").write_bytes(page_bytes)

O exemplo define device_writes_images = False em PngSaveOptions antes de atribuí-lo a options.save_options. Grava os bytes das páginas retornadas como page-1.png, page-2.png etc. Portanto, o dispositivo não cria arquivos PNG duplicados.

Em relação às opções de entrada

Se nosso arquivo de entrada principal exigir dependências, como pacotes que não estão incluídos no sistema de LaTeX básico ou em pacotes suportados, precisamos definir a opção requerir_input_directory de maneira semelhante à como definirmos a opção * output_working_directory * e colocamos as dependências nesse diretório. As dependências podem ser organizadas nos subdiretos, conforme necessário. Se tivermos nossos arquivos a serem incluídos no processo de composição, como arquivos gráficos externos, também precisamos definir o input_working_directory para o local onde esses arquivos são armazenados. Também podemos colocar o arquivo de entrada principal no diretório de entrada e especificar o caminho relativo ao construtor TeXJob ou especificar nenhum caminho se o arquivo de entrada principal estiver no diretório raiz. Também existem mais detalhes sobre o conceito de diretório de entrada em aspose.tex e as implementações fornecidas descritas.

Aprenda também as outras opções de emprego tex aqui.

Você também pode explorar o [aplicativo web] gratuito (24) para conversão de LaTeX-para-png, que é desenvolvida usando o Aspose.TeX para .NET API.

Abaixo, explicaremos brevemente a conversão de LaTeX em outros formatos de imagem raster suportados, sem mergulhar em muitos detalhes, pois não há diferenças significativas. A única variação está no tipo de propriedade Save_Options nas opções de conversão.

Converter LaTeX em jpg

 1# Convert LaTeX to JPEG.
 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, JpegSaveOptions
 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 = JpegSaveOptions()
22device = ImageDevice(True)
23job_result = TeXJob(str(input_file), device, options).run()

Você também pode explorar o aplicativo gratuito da web para conversão de LaTeX-para-jpg, que é desenvolvido usando o Aspose.TeX para .NET API.

Convertendo LaTeX em tiff

 1# Convert LaTeX to TIFF.
 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, TiffSaveOptions
 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 = TiffSaveOptions()
22device = ImageDevice(True)
23job_result = TeXJob(str(input_file), device, options).run()

Você também pode explorar o aplicativo gratuito da web para conversão de LaTeX-para-tiff, que é desenvolvido usando o Aspose.TeX para .NET API.

Converter LaTeX em BMP

 1# Convert LaTeX to BMP.
 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, BmpSaveOptions
 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 = BmpSaveOptions()
22device = ImageDevice(True)
23job_result = TeXJob(str(input_file), device, options).run()

Você também pode explorar o aplicativo gratuito da web para conversão de LaTeX para BMP, que é desenvolvido usando o Aspose.TeX para .NET API.

Converter LaTeX em SVG

Outro formato de destino suportado é svg. Gráficos vetoriais escaláveis ​​(SVG) é um formato de imagem vetorial baseado em XML que é usado para definir gráficos bidimensionais. Ele suporta interatividade e animação.

As imagens SVG são armazenadas em arquivos de texto XML e definidas em um formato gráfico vetorial. Isso significa que as imagens SVG podem ser escalonadas em tamanho sem perder a qualidade e os próprios arquivos SVG podem ser pesquisados, indexados, scripts e compactados. Os arquivos de texto XML podem ser criados e editados usando editores de texto ou editores de gráficos vetoriais, e eles podem ser renderizados pelos navegadores da web mais usados.

A API Aspose.svg oferece uma variedade de recursos para trabalhar com SVG, como criar, carregar, editar e converter SVG documentos.

A conversão de LaTeX em SVG é tão direta quanto converter em formatos de imagem raster, com a única diferença que as Save_Options devem ser definidas como uma instância da classe svgSaveOptions e o dispositivo deve ser alterado para uma instância da classe SvgDevice.

 1# Convert LaTeX to SVG.
 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.svg import SvgDevice, SvgSaveOptions
 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 = SvgSaveOptions()
22device = SvgDevice()
23job_result = TeXJob(str(input_file), device, options).run()

Você também pode explorar o aplicativo gratuito da web para conversão de LaTeX para SVG, que é desenvolvido usando o Aspose.TeX para .NET API.