Создание пользовательского формата TeX и набор текста в PDF и XPS с использованием C++

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

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

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

PM> Install-Package Aspose.TeX.Cpp

Создайте пользовательский формат TeX с помощью C++

Ниже приведены шаги для создания пользовательского формата TeX.

  • Создайте экземпляр класса TeXOptions, используя значение свойства TeXConfig::getObjectIniTeX().
  • Укажите входной и выходной рабочие каталоги.
  • Создайте формат, используя [TeX::CreateFormat(System::String path, System::SharedPtr варианты) 9 метод.

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

// Создание параметров набора текста в расширении движка ObjectTeX.
System::SharedPtr<TeXOptions> options = TeXOptions::ConsoleAppOptions(TeXConfig::get_ObjectIniTeX());

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

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

// Запустите создание формата.
Aspose::TeX::TeX::CreateFormat(u"customtex", options);

Преобразование пользовательского формата TeX в формат XPS

Ниже приведены шаги для преобразования пользовательского формата TeX в формат XPS.

Ниже приведен пример кода для преобразования пользовательского формата TeX в формат XPS.

// Создайте рабочий каталог ввода файловой системы.
System::SharedPtr<IWorkingDirectory> wd = System::MakeObject<InputFileSystemDirectory>(u"SourceDirectory");
{
    // Создайте поставщика формата.
    System::SharedPtr<FormatProvider> formatProvider = System::MakeObject<FormatProvider>(wd, u"customtex");

    // Очистка ресурсов под оператором «using»
    System::Details::DisposeGuard<1> __dispose_guard_0({ formatProvider });
    // ---------------------------------------------------------

    try
    {
        // Создайте параметры верстки для пользовательского формата в расширении движка ObjectTeX.
        System::SharedPtr<TeXOptions> options = TeXOptions::ConsoleAppOptions(TeXConfig::ObjectTeX(formatProvider));
        options->set_JobName(u"typeset-with-custom-format");

        // Укажите входной рабочий каталог.
        options->set_InputWorkingDirectory(wd);

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

        // Запустите набор текста.
        Aspose::TeX::TeX::Typeset(System::MakeObject<System::IO::MemoryStream>(System::Text::Encoding::get_ASCII()->GetBytes(u"Congratulations! You have successfully typeset this text with your own TeX format!\\end")), System::MakeObject<XpsDevice>(), options);
    }
    catch (...)
    {
        __dispose_guard_0.SetCurrentException(std::current_exception());
    }
}

Преобразование пользовательского формата TeX в формат PDF

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

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

// Создайте рабочий каталог ввода файловой системы.
System::SharedPtr<IWorkingDirectory> wd = System::MakeObject<InputFileSystemDirectory>(u"SourceDirectory");
{
    // Создайте поставщика формата.
    System::SharedPtr<FormatProvider> formatProvider = System::MakeObject<FormatProvider>(wd, u"customtex");

    // Очистка ресурсов под оператором «using»
    System::Details::DisposeGuard<1> __dispose_guard_0({ formatProvider });
    // ---------------------------------------------------------

    try
    {
        // Создайте параметры верстки для пользовательского формата в расширении движка ObjectTeX.
        System::SharedPtr<TeXOptions> options = TeXOptions::ConsoleAppOptions(TeXConfig::ObjectTeX(formatProvider));
        options->set_JobName(u"typeset-with-custom-format");

        // Укажите входной рабочий каталог.
        options->set_InputWorkingDirectory(wd);

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

        // Укажите PdfSaveOptions
        options->set_SaveOptions(System::MakeObject<PdfSaveOptions>());

        // Запустите набор текста.
        Aspose::TeX::TeX::Typeset(System::MakeObject<System::IO::MemoryStream>(System::Text::Encoding::get_ASCII()->GetBytes(u"Congratulations! You have successfully typeset this text with your own TeX format!\\end")), System::MakeObject<PdfDevice>(), options);
    }
    catch (...)
    {
        __dispose_guard_0.SetCurrentException(std::current_exception());
    }
}

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

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

Вывод

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

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