Программное преобразование TeX в файл PDF или XPS с использованием C++

Файлы TeX используются для верстки различных документов и книг, содержащих текст, символы и арифметические выражения. Кроме того, эти файлы могут генерировать выходные данные, такие как PDF, XPS и различные форматы изображений. В этой статье вы узнаете, как конвертировать файлы TeX в формат XPS и PDF с помощью C++.

C++ API для преобразования TeX в формат PDF и XPS

Aspose.TeX for C++ — это библиотека C++ для работы с файлами TeX, не требующая установки какого-либо дополнительного программного обеспечения. API позволяет вам печатать файлы TeX и генерировать выходные данные в таких форматах, как XPS, PDF, PNG, JPEG, TIFF, БМП. Вы можете либо установить API через NuGet, либо загрузить его напрямую из раздела Загрузки.

PM> Install-Package Aspose.TeX.Cpp

Преобразование TeX в формат XPS с помощью C++

Вы можете преобразовать файлы TeX в формат XPS всего за несколько строк кода. Для этого выполните шаги, указанные ниже.

В следующем примере кода показано, как преобразовать файл TeX в формат XPS с помощью C++.

// Создайте параметры верстки для формата ObjectTeX по умолчанию в расширении движка ObjectTeX.
System::SharedPtr<TeXOptions> options = TeXOptions::ConsoleAppOptions(TeXConfig::ObjectTeX());

// Укажите рабочий каталог файловой системы для ввода.
options->set_InputWorkingDirectory(System::MakeObject<InputFileSystemDirectory>(u"SourceDirectory"));

// Укажите рабочий каталог файловой системы для вывода.
options->set_OutputWorkingDirectory(System::MakeObject<OutputFileSystemDirectory>(u"OutputDirectory"));

// Укажите консоль в качестве выходного терминала.
options->set_TerminalOut(System::MakeObject<Aspose::TeX::IO::OutputConsoleTerminal>());
// По умолчанию. Нет необходимости указывать.
// Укажите поток памяти в качестве выходного терминала, если вы не хотите, чтобы выходные данные терминала записывались в консоль.
//options.TerminalOut = новый OutputMemoryTerminal();

// Запустите набор текста.
Aspose::TeX::TeX::Typeset(u"hello-world", System::MakeObject<XpsDevice>(), options);

// Для дальнейшего выхода смотреть пишите.
options->get_TerminalOut()->get_Writer()->WriteLine();

Преобразование TeX в формат PDF с помощью C++

Ниже приведены шаги для преобразования файлов TeX в формат PDF.

В следующем примере кода показано, как преобразовать файл TeX в формат PDF с помощью C++.

// Создайте параметры верстки для формата ObjectTeX по умолчанию в расширении движка ObjectTeX.
System::SharedPtr<TeXOptions> options = TeXOptions::ConsoleAppOptions(TeXConfig::ObjectTeX());

// Укажите рабочий каталог файловой системы для ввода.
options->set_InputWorkingDirectory(System::MakeObject<InputFileSystemDirectory>(u"SourceDirectory"));

// Укажите рабочий каталог файловой системы для вывода.
options->set_OutputWorkingDirectory(System::MakeObject<OutputFileSystemDirectory>(u"OutputDirectory"));

// Укажите консоль в качестве выходного терминала.
options->set_TerminalOut(System::MakeObject<Aspose::TeX::IO::OutputConsoleTerminal>());
// По умолчанию. Нет необходимости указывать.
// Укажите поток памяти в качестве выходного терминала, если вы не хотите, чтобы выходные данные терминала записывались в консоль.
//options.TerminalOut = новый OutputMemoryTerminal();

// Установить PdfSaveOptions
options->set_SaveOptions(System::MakeObject<PdfSaveOptions>());

// Запустите набор текста.
Aspose::TeX::TeX::Typeset(u"hello-world", System::MakeObject<PdfDevice>(), options);

// Для дальнейшего выхода смотреть пишите.
options->get_TerminalOut()->get_Writer()->WriteLine();

Преобразование ZIP-каталога TeX в ZIP-каталог PDF с помощью C++

Чтобы преобразовать несколько файлов TeX в формат PDF за один раз, вы можете добавить файлы TeX в ZIP-архив и преобразовать их в заархивированные файлы PDF. Ниже приведены шаги для достижения этого.

В следующем примере кода показано, как преобразовать ZIP-архив TeX в ZIP-архив PDF с помощью C++.

// Откройте исходный zip-файл в потоке
System::SharedPtr<System::IO::Stream> inZipStream = System::IO::File::Open(System::IO::Path::Combine(u"SourceDirectory", u"zip-in.zip"), System::IO::FileMode::Open);
// Очистка ресурсов под оператором «using»
System::Details::DisposeGuard<1> __dispose_guard_1({ inZipStream });
// ------------------------------------------------------------------------

try {
    // Откройте выходной zip-файл в потоке
    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);
    // Очистка ресурсов под оператором «using»
    System::Details::DisposeGuard<1> __dispose_guard_0({ outZipStream });
    // ------------------------------------------------------------------------

    try
    {
        // Создайте параметры верстки для формата ObjectTeX по умолчанию в расширении движка ObjectTeX.
        System::SharedPtr<TeXOptions> options = TeXOptions::ConsoleAppOptions(TeXConfig::ObjectTeX());

        // Укажите рабочий каталог ZIP-архива для ввода.
        options->set_InputWorkingDirectory(System::MakeObject<InputZipDirectory>(inZipStream, u"in"));

        // Укажите рабочий каталог ZIP-архива для вывода.
        options->set_OutputWorkingDirectory(System::MakeObject<OutputZipDirectory>(outZipStream));

        // Укажите консоль в качестве выходного терминала.
        options->set_TerminalOut(System::MakeObject<OutputConsoleTerminal>());
        // По умолчанию. Не обязательно указывать.

        // Создайте и укажите параметры сохранения.
        options->set_SaveOptions(System::MakeObject<PdfSaveOptions>());

        // Запустите набор текста.
        Aspose::TeX::TeX::Typeset(u"hello-world", System::MakeObject<PdfDevice>(), options);

        // Для последующего вывода посмотреть напишите. 
        options->get_TerminalOut()->get_Writer()->WriteLine();

        // Завершить выходной ZIP-архив.
        (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());
}

Получить бесплатную лицензию

Вы можете попробовать API без ограничений на пробную версию, запросив бесплатную временную лицензию.

Вывод

В этой статье вы узнали, как конвертировать файлы TeX в формат XPS и PDF с помощью C++. Кроме того, вы узнали, как конвертировать файлы TeX в ZIP-архиве в заархивированные PDF-файлы. Aspose.TeX для C++ предоставляет множество дополнительных функций для работы с файлами TeX. Вы можете подробно изучить API, посетив официальную документацию. Если у вас возникнут вопросы, свяжитесь с нами на нашем бесплатном форуме поддержки.

Смотрите также