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++.