LaTeX до XPS | Aspose.TeX для C++
Іншим цільовим форматом, який підтримує Aspose.TeX, є XPS. Файл XPS насправді є ZIP-пакетом, який містить розбитий на сторінки вміст документа разом із метаданими, необхідними для належного відображення певними засобами перегляду (наприклад, Windows XPS Viewer) і друку. Усі дані в пакеті представлені файлами. Деякі з них є двійковими та містять такі ресурси, як зображення, шрифти та профілі ICC. Інші — це XML-файли в різних конкретних схемах. До останніх відносяться файли, що містять самі дані документа. Дані документа складаються з набору файлів - кожен файл містить дані для окремої сторінки документа. Такі файли складаються з одного елемента сторінки та дерева дочірніх елементів - Canvas, Path і Glyphs. Canvas — це груповий елемент, який може містити інші Canvases, 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 (8), створеною на основі API Aspose.TeX для .NET. Тут – сторінка версії C++.