Látex a XPS | Aspose.TeX para C++

Otro formato de destino admitido por Aspose.TeX es XPS. Un archivo XPS es en realidad un paquete ZIP que contiene el contenido paginado de un documento, junto con los metadatos necesarios para que visores específicos (como Windows XPS Viewer) lo muestren correctamente y lo impriman. Todos los datos de un paquete están representados por archivos. Algunos de ellos son binarios y contienen recursos como imágenes, fuentes y perfiles ICC. Otros son archivos XML en varios esquemas específicos. Estos últimos incluyen archivos que contienen los datos del documento en sí. Los datos del documento constan de un conjunto de archivos: cada archivo contiene datos para una página individual del documento. Dichos archivos constan de un único elemento de página y un árbol de elementos secundarios: Canvas, Path y Glyphs. Canvas es un elemento de agrupación que puede contener otros Canvases, Paths y Glyphs. Su misión es controlar la apariencia de todos los elementos secundarios como grupo. Los elementos Path se utilizan para definir rutas de gráficos vectoriales. Y los elementos Glifos se utilizan para definir el contenido textual. Los tres elementos tienen propiedades para definir varios aspectos de la apariencia.

Existe la biblioteca Aspose.Page que proporciona una API para manipular documentos XPS, así como convertirlos a formatos PDF y de imágenes rasterizadas.

Cómo convertir LaTeX a XPS

La conversión a XPS es tan simple como la conversión a formatos de imagen rasterizada, excepto que además de SaveOptions, tenemos que cambiar el dispositivo a una instancia de XpsDevice clase.

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();

Una forma alternativa de escribir el archivo XPS de salida principal

Hay otro constructor de la clase XpsDevice, que nos permite obtener el archivo XPS resultante de una forma alternativa.

 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    }

El efecto es el mismo que obtenemos aquí.

También puede consultar la aplicación web gratuita de conversión de LaTeX a XPS creada en base a la API Aspose.TeX para .NET. Aquí es la página de la versión C++.

Subscribe to Aspose Product Updates

Get monthly newsletters & offers directly delivered to your mailbox.