Látex para imagem | C++

Aspose.TeX para C ++ Também nos permite converter arquivos de LaTeX em vários outros formatos de imagem raster.

Como converter LaTeX para png

Vamos dar uma olhada detalhada no código em C ++, fornecendo a maneira mais simples de converter o LATEX em formato PNG.

                
            

Portanto, a primeira coisa que precisamos fazer (bem, às vezes não é a primeira) é criar uma instância da classe Texoptions. O único método estático que faz isso é ConsoleAppOptions(), então não seremos intrigados com o significado de seu nome. O método pega a instância get_objectLaTeX() da classe texconfig, que é exatamente adequada para converter um arquivo LaTeX. Esta configuração informa ao mecanismo Tex do objeto para carregar o formato de LaTeX do objeto e estar pronto para aceitar o arquivo LATEX. O formato LATEX do Object é na verdade apenas o formato LATEX, exceto que ele usa as primitivas específicas Object tex para configurar as métricas da página.

A primeira das opções necessárias é OutputWorkingDirectory que define o espaço ou área, onde a saída TEX será gravada. Aqui são os detalhes sobre o conceito de diretório de saída em aspose.tex para c ++. Neste exemplo, usamos a classe outputFilesystemDirectory, que nos permite escrever a saída no diretório ou pasta especificada.

A segunda opção é uma instância de classe saveOptions que controlará a transformação do modelo de objeto no formato de destino. Como estamos convertendo o LATEX em PNG, é a instância da classe pngSaveOptions, que nos permite especificar a resolução das imagens de saída.

De seguida, precisamos de criar uma instância da classe TeXJob. Para converter um ficheiro LaTeX armazenado no sistema de ficheiros, utilizamos esta versão do construtor. Precisamos de especificar o caminho completo para o ficheiro. Caso contrário, o motor irá procurá-lo no directório actual (que é CurrentDirectory) e provavelmente não o encontrará. No entanto, podemos omitir a extensão se o nosso ficheiro tiver a extensão . tex. O mecanismo 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 (que é comum a todos os formatos de imagem suportados). Como último argumento, passámos as opções de conversão preparadas recentemente.

Tudo o que resta a fazer agora é correr o trabalho.

Independentemente de a execução ter sido bem -sucedida ou não, o primeiro resultado que veremos será a saída do terminal. Em caso de sucesso, parece algo assim:

 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.

Encontraremos outras “frutas” do trabalho do motor na pasta que especificamos como diretório de saída. Esse será o arquivo de transcrição e, ** aqui está!

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

Há outra maneira de obter dados da imagem como uma matriz de matrizes de bytes, cada matriz na segunda dimensão representa dados de imagem para uma página separada.

 1    // Create conversion options for Object LaTeX format on Object TeX engine extension.
 2    System::SharedPtr<TeXOptions> options = TeXOptions::ConsoleAppOptions(TeXConfig::get_ObjectLaTeX());
 3    // Specify the file system working directory for the output.
 4    options->set_OutputWorkingDirectory(System::MakeObject<OutputFileSystemDirectory>(RunExamples::OutputDirectory));
 5    // Initialize the options for saving in PNG format.
 6    options->set_SaveOptions(System::MakeObject<PngSaveOptions>());
 7    // Run LaTeX to PNG conversion.
 8    System::SharedPtr<ImageDevice> device = System::MakeObject<ImageDevice>();
 9    System::MakeObject<TeXJob>(System::IO::Path::Combine(RunExamples::InputDirectory, u"hello-world.ltx"), device, options)->Run();
10    
11    // Save pages file by file.
12    for (int32_t i = 0; i < device->get_Result()->get_Length(); i++)
13    {
14        {
15            System::SharedPtr<System::IO::Stream> fs = System::IO::File::Open(System::IO::Path::Combine(RunExamples::OutputDirectory, System::String(u"page-") + (i + 1) + u".png"), System::IO::FileMode::Create);
16            // Clearing resources under 'using' statement
17            System::Details::DisposeGuard<1> __dispose_guard_0({ fs});
18            // ------------------------------------------
19            
20            try
21            {
22                fs->Write(device->get_Result()[i], 0, device->get_Result()[i]->get_Length());
23            }
24            catch(...)
25            {
26                __dispose_guard_0.SetCurrentException(std::current_exception());
27            }
28        }
29    }

Os arquivos * “página-n.png” * serão gravados em qualquer caminho que especifique. Ao contrário de saída em PDF, eles duplicarão os arquivos PNG de saída gravados no diretório de saída.

Sobre opções de entrada

Caso nosso arquivo de entrada principal exija dependências, por exemplo, pacotes, que não estão incluídos no sistema de LaTeX básico e pacotes suportados, devemos definir a opção requerirInputDirectory da maneira semelhante a definir a opção OutputWorkingDirectory e colocar as dependências nesse diretório. As dependências podem ser organizadas arbitrariamente em subdiretos. Caso tenhamos nossos próprios arquivos a serem incluídos ao longo do processo de composição, digamos arquivos gráficos externos, também devemos definir o InputWorkingDirectory usando o caminho para o local onde esses arquivos são coletados. Também podemos colocar o arquivo de entrada principal em algum lugar dentro do diretório de entrada e especificar o caminho relativo no método run() (ou especificar nenhum caminho se o arquivo de entrada principal estiver na raiz). Aqui são os detalhes sobre o conceito de diretório de entrada em aspose.tex para c ++ e fornecidas implementações.

Outras opções de trabalho Tex são discutidas aqui.

Você também pode conferir a conversão LATEX-PNG GRATUITA aplicativo da Web construído com base no Aspose.TeX para .NET API. Aqui é a página da versão C ++.

Abaixo, discutimos a conversão de LaTeX para outros formatos de imagem raster suportados. Não vamos entrar em detalhes apenas porque não há realmente detalhes. A única diferença está no tipo de propriedade SaveOptions nas opções de conversão.

Como converter LaTeX em jpeg

1...
2// Initialize the options for saving in JPEG format.
3options->set_SaveOptions(System::MakeObject<JpegSaveOptions>());

Você também pode conferir a conversão LATEX-JPEG GRATUITA aplicativo da web construído com base na API Aspose.TeX para .NET. Aqui é a página da versão C ++.

Como converter LaTeX para TIFF

1...
2// Initialize the options for saving in TIFF format.
3options->set_SaveOptions(System::MakeObject<TiffSaveOptions>());

Você também pode conferir a conversão LATEX-TIFF GRATUITA aplicativo da web construído com base na API Aspose.TeX para .NET. Aqui é a página da versão C ++.

Como converter LaTeX para BMP

1...
2// Initialize the options for saving in BMP format.
3options->set_SaveOptions(System::MakeObject<BmpSaveOptions>());

Você também pode conferir a conversão LATEX-BMP GRATUITA aplicativo da Web construído com base na API Aspose.TeX para .NET. Aqui é a página da versão C ++.

Have any questions about Aspose.TeX?



Subscribe to Aspose Product Updates

Get monthly newsletters & offers directly delivered to your mailbox.