LaTeX转XPS | Java

另一种目标格式是 xps。一个XPS文件实际上是一个ZIP软件包,其中包含文档的分页内容,以及特定查看者(例如Windows XPS Viewer)和打印所需的元数据。包装中的所有数据均在目录中作为文件组织。其中一些包含图像,字体和ICC配置文件等资源。其他是各种特定模式中的XML文件。后者包括包含文档数据本身的文件。文档数据是一组文件 - 每个文件包含文档单个页面的数据。此类文件由单个页面元素和子元素树组成 - canvas, path 和 glyphs。 canvas是一个分组元素,可以包含其他帆布,路径和glyphs。它的目的是控制所有儿童元素作为一个小组的外观。 路径元素用于定义向量图形路径。和 字形元素用于定义文本内容。这三个元素均具有定义外观各个方面的属性。

有 aspose.page库,该库提供了用于操纵XPS文档的API,并将其转换为PDF和栅格图像格式。

如何将LaTeX转换为XPS

转换为XPS与 转换为栅格图像格式一样简单,除了 SaveOptions之外,我们必须使用 XPSDEVICE 类的实例。

将 inputFile 设置为 LaTeX 文件(例如 hello-world.ltx)的完整路径,将 outputDirectory 设置为现有输出文件夹。导入代码片段中使用的 com.aspose.tex 和 com.aspose.tex.rendering 类。调用方法必须处理或声明异常。请按照 许可指南应用许可证,以避免评估版限制。此示例采用非交互式处理,并关闭输出资源。 对于无需外部文件的输入文件 hello-world.ltx,默认输出文件为 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}

编写主输出XPS文件的另一种方法

XPSDevice类的另一个构造函数使我们能够以替代方式获取生成的XPS文件。

使用与上文相同的 inputFile 和 outputDirectory 值。将 xpsFile 设置为 java.nio.file.Path,例如 Paths.get(outputDirectory, "any-name.xps")。除 Aspose.TeX 类外,还需导入 java.io.OutputStream、java.nio.file.Files、java.nio.file.Path 和 java.nio.file.Paths。 流决定 XPS 文件的输出位置;辅助文件仍写入 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}

效果与我们得到 这里相同。

您还可以查看基于 Aspose.TeX for .NET API 构建的免费 LaTeX 到 XPS 转换 网页应用。 此处 是 Java 版本页面。