LaTeX в XPS | Aspose.TeX для C++

Другой целевой формат, поддерживаемый Aspose.TeX, — это XPS. Файл XPS на самом деле представляет собой ZIP-пакет, содержащий содержимое документа с разбивкой на страницы, а также метаданные, необходимые для правильного отображения конкретными программами просмотра (например, Windows XPS Viewer) и печати. Все данные в пакете представлены файлами. Некоторые из них являются двоичными и содержат такие ресурсы, как изображения, шрифты и профили ICC. Другие представляют собой XML-файлы в различных конкретных схемах. К последним относятся файлы, содержащие сами данные документа. Данные документа состоят из набора файлов – каждый файл содержит данные для отдельной страницы документа. Такие файлы состоят из одного элемента страницы и дерева дочерних элементов — Canvas, Path и Glyphs. Canvas — это элемент группировки, который может содержать другие Canvas, Paths и Glyphs. Его задача — контролировать внешний вид всех дочерних элементов как группы. Элементы Path используются для определения путей векторной графики. А элементы Glyphs используются для определения текстового содержимого. Все три элемента обладают свойствами, определяющими различные аспекты внешнего вида.

Существует библиотека Aspose.Page, которая предоставляет API для работы с документами XPS, а также для их преобразования в форматы PDF и растровых изображений.

Как конвертировать LaTeX в XPS

Преобразование в XPS так же просто, как и преобразование в форматы растровых изображений, за исключением того, что в дополнение к SaveOptions нам нужно изменить устройство на экземпляр XpsDevice сорт.

1...
2// Initialize the options for saving in Xps format.
3options->set_SaveOptions(System::MakeObject<XpsSaveOptions>());
4
5System::MakeObject<Aspose::TeX::TeXJob>(u"hello-world.ltx", System::MakeObject<XpsDevice>(), options)->Run();

Альтернативный способ записи основного выходного файла XPS.

Есть еще один конструктор класса XpsDevice, который позволяет нам получить результирующий XPS-файл альтернативным способом.

 1    // Create the stream to write the XPS file to.
 2    {
 3        System::SharedPtr<System::IO::Stream> xpsStream = System::IO::File::Open(System::IO::Path::Combine(RunExamples::OutputDirectory, u"any-name.xps"), System::IO::FileMode::Create);
 4        // Clearing resources under 'using' statement
 5        System::Details::DisposeGuard<1> __dispose_guard_0({ xpsStream});
 6        // ------------------------------------------
 7        
 8        try
 9        {
10            // Create conversion options for Object LaTeX format on Object TeX engine extension.
11            System::SharedPtr<TeXOptions> options = TeXOptions::ConsoleAppOptions(TeXConfig::get_ObjectLaTeX());
12            // Specify the file system working directory for the output.
13            options->set_OutputWorkingDirectory(System::MakeObject<OutputFileSystemDirectory>(RunExamples::OutputDirectory));
14            // Initialize the options for saving in XPS format.
15            options->set_SaveOptions(System::MakeObject<XpsSaveOptions>());
16            // Default value.
17            // Run LaTeX to XPS conversion.
18            System::MakeObject<TeXJob>(System::IO::Path::Combine(RunExamples::InputDirectory, u"hello-world.ltx"), System::MakeObject<XpsDevice>(xpsStream), options)->Run();
19        }
20        catch(...)
21        {
22            __dispose_guard_0.SetCurrentException(std::current_exception());
23        }
24    }

Эффект тот же, что мы получаем здесь.

Вы также можете ознакомиться с бесплатным преобразованием LaTeX в XPS веб-приложение, созданным на основе API Aspose.TeX for .NET. Здесь — страница версии C++.

Subscribe to Aspose Product Updates

Get monthly newsletters & offers directly delivered to your mailbox.