Converter TeX para arquivo PDF ou XPS programaticamente usando C++

Os arquivos TeX são usados para compor diferentes documentos e livros contendo texto, símbolos e expressões aritméticas. Além disso, esses arquivos podem gerar saídas como PDF, XPS e vários formatos de imagem. Neste artigo, você aprenderá como converter arquivos TeX para o formato XPS e PDF usando C++.

API C++ para converter TeX para PDF e formato XPS

Aspose.TeX for C++ é uma biblioteca C++ para trabalhar com arquivos TeX sem exigir a instalação de nenhum software adicional. A API permite que você componha arquivos TeX e gere saída em formatos como XPS, PDF, PNG, JPEG, TIFF, BMP. Você pode instalar a API por meio do NuGet ou baixá-la diretamente da seção Downloads.

PM> Install-Package Aspose.TeX.Cpp

Converter TeX para formato XPS usando C++

Você pode converter arquivos TeX para o formato XPS em apenas algumas linhas de código. Para conseguir isso, siga os passos abaixo.

O código de exemplo a seguir demonstra como converter um arquivo TeX para o formato XPS usando C++.

// Crie opções de composição para o formato padrão do ObjectTeX na extensão do mecanismo ObjectTeX.
System::SharedPtr<TeXOptions> options = TeXOptions::ConsoleAppOptions(TeXConfig::ObjectTeX());

// Especifique um diretório de trabalho do sistema de arquivos para entrada.
options->set_InputWorkingDirectory(System::MakeObject<InputFileSystemDirectory>(u"SourceDirectory"));

// Especifique um diretório de trabalho do sistema de arquivos para saída.
options->set_OutputWorkingDirectory(System::MakeObject<OutputFileSystemDirectory>(u"OutputDirectory"));

// Especifique o console como terminal de saída.
options->set_TerminalOut(System::MakeObject<Aspose::TeX::IO::OutputConsoleTerminal>());
// Predefinição. Não há necessidade de especificar.
// Especifique o fluxo de memória como terminal de saída, se você não quiser que a saída do terminal seja gravada no console.
//opções.TerminalOut = new OutputMemoryTerminal();

// Execute a tipografia.
Aspose::TeX::TeX::Typeset(u"hello-world", System::MakeObject<XpsDevice>(), options);

// Para obter mais saídas, escreva.
options->get_TerminalOut()->get_Writer()->WriteLine();

Convertendo TeX para o formato PDF usando C++

A seguir estão as etapas para converter arquivos TeX para o formato PDF.

O código de exemplo a seguir mostra como converter um arquivo TeX para o formato PDF usando C++.

// Crie opções de composição para o formato padrão do ObjectTeX na extensão do mecanismo ObjectTeX.
System::SharedPtr<TeXOptions> options = TeXOptions::ConsoleAppOptions(TeXConfig::ObjectTeX());

// Especifique um diretório de trabalho do sistema de arquivos para entrada.
options->set_InputWorkingDirectory(System::MakeObject<InputFileSystemDirectory>(u"SourceDirectory"));

// Especifique um diretório de trabalho do sistema de arquivos para saída.
options->set_OutputWorkingDirectory(System::MakeObject<OutputFileSystemDirectory>(u"OutputDirectory"));

// Especifique o console como terminal de saída.
options->set_TerminalOut(System::MakeObject<Aspose::TeX::IO::OutputConsoleTerminal>());
// Predefinição. Não há necessidade de especificar.
// Especifique o fluxo de memória como terminal de saída, se você não quiser que a saída do terminal seja gravada no console.
//opções.TerminalOut = new OutputMemoryTerminal();

// Definir PdfSaveOptions
options->set_SaveOptions(System::MakeObject<PdfSaveOptions>());

// Execute a tipografia.
Aspose::TeX::TeX::Typeset(u"hello-world", System::MakeObject<PdfDevice>(), options);

// Para obter mais saídas, escreva.
options->get_TerminalOut()->get_Writer()->WriteLine();

Converter diretório ZIP TeX para diretório ZIP PDF usando C++

Para converter vários arquivos TeX para o formato PDF de uma só vez, você pode adicionar os arquivos TeX a um arquivo ZIP e convertê-los em arquivos PDF compactados. A seguir estão os passos para conseguir isso.

O código de exemplo a seguir mostra como converter o arquivo ZIP TeX em arquivo ZIP PDF usando C++.

// Abra o arquivo zip de origem em um fluxo
System::SharedPtr<System::IO::Stream> inZipStream = System::IO::File::Open(System::IO::Path::Combine(u"SourceDirectory", u"zip-in.zip"), System::IO::FileMode::Open);
// Limpando recursos sob a instrução 'usando'
System::Details::DisposeGuard<1> __dispose_guard_1({ inZipStream });
// ------------------------------------------

try {
    // Abra o arquivo zip de saída em um fluxo
    System::SharedPtr<System::IO::Stream> outZipStream = System::IO::File::Open(System::IO::Path::Combine(u"OutputDirectory", u"zip-pdf-out.zip"), System::IO::FileMode::Create);
    // Limpando recursos sob a instrução 'usando'
    System::Details::DisposeGuard<1> __dispose_guard_0({ outZipStream });
    // ------------------------------------------

    try
    {
        // Crie opções de composição para o formato padrão do ObjectTeX na extensão do mecanismo ObjectTeX.
        System::SharedPtr<TeXOptions> options = TeXOptions::ConsoleAppOptions(TeXConfig::ObjectTeX());

        // Especifique um diretório de trabalho do arquivo ZIP para entrada.
        options->set_InputWorkingDirectory(System::MakeObject<InputZipDirectory>(inZipStream, u"in"));

        // Especifique um diretório de trabalho do arquivo ZIP para saída.
        options->set_OutputWorkingDirectory(System::MakeObject<OutputZipDirectory>(outZipStream));

        // Especifique o console como terminal de saída.
        options->set_TerminalOut(System::MakeObject<OutputConsoleTerminal>());
        // Predefinição. Não é necessário especificar.

        // Crie e especifique opções de salvamento.
        options->set_SaveOptions(System::MakeObject<PdfSaveOptions>());

        // Execute a tipografia.
        Aspose::TeX::TeX::Typeset(u"hello-world", System::MakeObject<PdfDevice>(), options);

        // Para que a saída consequente pareça, escreva. 
        options->get_TerminalOut()->get_Writer()->WriteLine();

        // Finalize o arquivo ZIP de saída.
        (System::DynamicCast<Aspose::TeX::IO::OutputZipDirectory>(options->get_OutputWorkingDirectory()))->Finish();
    }
    catch (...)
    {
        __dispose_guard_0.SetCurrentException(std::current_exception());
    }
}
catch (...)
{
    __dispose_guard_1.SetCurrentException(std::current_exception());
}

Obtenha uma licença gratuita

Você pode experimentar a API sem limitações de avaliação solicitando uma licença temporária gratuita.

Conclusão

Neste artigo, você aprendeu como converter arquivos TeX para o formato XPS e PDF usando C++. Além disso, você aprendeu como converter arquivos TeX em um arquivo ZIP para arquivos PDF compactados. O Aspose.TeX para C++ fornece muitos recursos adicionais para trabalhar com arquivos TeX. Você pode explorar a API em detalhes visitando a documentação oficial. Em caso de dúvidas, sinta-se à vontade para entrar em contato conosco em nosso fórum de suporte gratuito.

Veja também