Látex a XPS | Java
Otro formato de destino es XPS. Un archivo XPS es físicamente un paquete ZIP que contiene contenido paginado de un documento, así como 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 organizados como archivos en directorios. Algunos de ellos 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 son 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 propósito 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 del texto. 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 usar una instancia de la clase XpsDevice .
Establezca inputFile en la ruta completa de su archivo LaTeX, como hello-world.ltx, y outputDirectory en una carpeta de salida existente. Importe las clases de com.aspose.tex y com.aspose.tex.rendering utilizadas en el fragmento. El método que realiza la llamada debe capturar o declarar las excepciones. Aplique una licencia como se describe en la
guía de licencias para evitar las restricciones de evaluación. El ejemplo utiliza un procesamiento no interactivo y cierra sus recursos de salida. Para el archivo de entrada independiente hello-world.ltx, la salida predeterminada es hello-world.xps.
1// Convert LaTeX to XPS using the default output filename.
2// inputFile is the full input path; outputDirectory is an existing output folder.
3TeXOptions options = TeXOptions.consoleAppOptions(TeXConfig.objectLaTeX());
4OutputFileSystemDirectory output = new OutputFileSystemDirectory(outputDirectory);
5options.setOutputWorkingDirectory(output);
6options.setSaveOptions(new XpsSaveOptions());
7options.setInteraction(Interaction.NonstopMode);
8
9XpsDevice device = new XpsDevice();
10TeXJobResult result;
11try {
12 result = new TeXJob(inputFile, device, options).run();
13} finally {
14 device.dispose();
15 output.close();
16}Una forma alternativa de escribir el archivo XPS de salida principal
Existe otro constructor de la clase XpsDevice, que nos permite obtener el archivo XPS resultante de una forma alternativa.
Utilice los mismos valores de inputFile y outputDirectory que arriba. Establezca xpsFile en un java.nio.file.Path, por ejemplo Paths.get(outputDirectory, "any-name.xps"). Además de las clases de Aspose.TeX, importe java.io.OutputStream, java.nio.file.Files, java.nio.file.Path y java.nio.file.Paths. El flujo controla el destino del archivo XPS; los archivos auxiliares se escriben en outputDirectory.
1// Convert LaTeX to XPS using an explicitly selected output stream.
2// inputFile is the full input path; outputDirectory is an existing output folder.
3// xpsFile is the java.nio.file.Path of the XPS file to create.
4TeXJobResult result;
5try (OutputStream xpsStream = Files.newOutputStream(xpsFile)) {
6 TeXOptions options = TeXOptions.consoleAppOptions(TeXConfig.objectLaTeX());
7 OutputFileSystemDirectory output = new OutputFileSystemDirectory(outputDirectory);
8 options.setOutputWorkingDirectory(output);
9 options.setSaveOptions(new XpsSaveOptions());
10 options.setInteraction(Interaction.NonstopMode);
11
12 XpsDevice device = new XpsDevice(xpsStream);
13 try {
14 result = new TeXJob(inputFile, device, options).run();
15 } finally {
16 device.dispose();
17 output.close();
18 }
19}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 de Java.