Aspose.TeX 的输出接口 | Java
请参阅java Aspose.TeX API参考有关I/O实现的正式定义。
文件系统、ZIP 和终端示例将 hello-world.tex 排版为 XPS。将 inputDirectory 设置为包含 TeX 文件的文件夹,将 outputDirectory 设置为现有的输出文件夹。对于 ZIP 输出,将 outputZip 设置为现有文件夹中的 java.nio.file.Path。 导入所选示例使用的 Aspose.TeX 类、com.aspose.tex.rendering.XpsDevice 以及所需的 java.io 和 java.nio.file 类。调用方法必须处理或声明异常。按照
许可指南应用许可证,以避免评估版限制。
输出目录的概念
由于tex语言的I/O元素只能处理文件名,因此aspose.tex将目录定义为名称和大部分数据之间的映射。大部分数据应该是文件,流,数组或其他任何数据。API允许我们分别指定输入和输出工作目录。它为输出提供了常规 iOutputworkingDirectory接口,用户可以为其自己的目的实现。它还提供了自己的实现,将在下面讨论。该接口扩展了 iinputworkingDirectory,因为引擎可以首先创建和编写文件,然后将其读回。接口自己的方法 getOuputfile()返回流的流,而不是 getfile()返回的流。
将文件输出输出到磁盘文件系统
正如我们提到的 上图, outputWorkingDirectory的最常见值可能是 outputsFilesystemdirectory类的一个实例。
这是我们将其设置的方式:
1// inputDirectory contains hello-world.tex; outputDirectory is an existing output folder.
2TeXOptions options = TeXOptions.consoleAppOptions(TeXConfig.objectTeX());
3InputFileSystemDirectory input = new InputFileSystemDirectory(inputDirectory);
4OutputFileSystemDirectory output = new OutputFileSystemDirectory(outputDirectory);
5options.setInputWorkingDirectory(input);
6options.setOutputWorkingDirectory(output);
7options.setInteraction(Interaction.NonstopMode);
8options.setTerminalOut(new OutputMemoryTerminal());
9
10XpsDevice device = new XpsDevice();
11TeXJobResult result;
12try {
13 result = new TeXJob("hello-world", device, options).run();
14} finally {
15 device.dispose();
16 output.close();
17 input.close();
18}此用例非常简单,因此我们很长一段时间都不会呆在上面。
将文件输出写入邮政编码
我们还可以创建一个文件(或流),并让Tex引擎将其用作ZIP存档来存储输出文件。这里是:
1// Store the XPS document and TeX transcript in a ZIP archive.
2// inputDirectory contains hello-world.tex; outputZip is the java.nio.file.Path to create.
3TeXJobResult result;
4try (OutputStream zipStream = Files.newOutputStream(outputZip)) {
5 TeXOptions options = TeXOptions.consoleAppOptions(TeXConfig.objectTeX());
6 InputFileSystemDirectory input = new InputFileSystemDirectory(inputDirectory);
7 OutputZipDirectory output = new OutputZipDirectory(zipStream);
8 options.setInputWorkingDirectory(input);
9 options.setOutputWorkingDirectory(output);
10 options.setInteraction(Interaction.NonstopMode);
11 options.setTerminalOut(new OutputMemoryTerminal());
12 XpsDevice device = new XpsDevice();
13 try {
14 result = new TeXJob("hello-world", device, options).run();
15 // Finalize the archive while its underlying stream is still open.
16 output.finish();
17 } finally {
18 device.dispose();
19 output.close();
20 input.close();
21 }
22}首先,我们为zip文件创建一个输出流。然后,在创建转换选项之后,我们将
outputworkingDirectory选项设置为
outputzipdirectory类的实例。 此示例将 hello-world.xps 和 hello-world.log 保存到归档中。作业结束后,在关闭底层流之前调用输出目录的 finish()。示例在作业结束前保持流和工作目录打开,随后关闭它们。
输出终端的概念
输出中还有另一个重要部分 - 终端输出。至于这个,java的Aspose.TeX将常规 iOutputterminal接口定义为具有两种方法。其中一个返回 BufferedWriter实例。另一个将 outputStream实例作为基础流返回。提供的接口的实现将在下面讨论。
将终端输出写入控制台
为此,我们需要将 终端图选项设置为 outputConsoleterminal类的实例。
1// inputDirectory contains hello-world.tex; outputDirectory is an existing output folder.
2TeXOptions options = TeXOptions.consoleAppOptions(TeXConfig.objectTeX());
3InputFileSystemDirectory input = new InputFileSystemDirectory(inputDirectory);
4OutputFileSystemDirectory output = new OutputFileSystemDirectory(outputDirectory);
5options.setInputWorkingDirectory(input);
6options.setOutputWorkingDirectory(output);
7options.setInteraction(Interaction.NonstopMode);
8// This is also the default output terminal.
9options.setTerminalOut(new OutputConsoleTerminal());
10
11XpsDevice device = new XpsDevice();
12TeXJobResult result;
13try {
14 result = new TeXJob("hello-world", device, options).run();
15} finally {
16 device.dispose();
17 output.close();
18 input.close();
19}OutputConsoleTerminal 是此选项的默认值。此示例显式选择它,并在转换期间将终端输出写入控制台。四个示例均以非交互方式运行;文件系统和 ZIP 示例将终端输出保存在内存中。
将终端输出写入文件
与输入终端不同,aspose.tex的Java提供了 iOutputterminal的实现,这使我们能够将终端输出写入某些输出目录中的文件。
1// inputDirectory contains hello-world.tex; outputDirectory is an existing output folder.
2TeXOptions options = TeXOptions.consoleAppOptions(TeXConfig.objectTeX());
3InputFileSystemDirectory input = new InputFileSystemDirectory(inputDirectory);
4OutputFileSystemDirectory output = new OutputFileSystemDirectory(outputDirectory);
5options.setInputWorkingDirectory(input);
6options.setOutputWorkingDirectory(output);
7options.setInteraction(Interaction.NonstopMode);
8// Set the output directory first: the terminal writes <job_name>.trm there.
9options.setTerminalOut(new OutputFileTerminal(options.getOutputWorkingDirectory()));
10
11XpsDevice device = new XpsDevice();
12TeXJobResult result;
13try {
14 result = new TeXJob("hello-world", device, options).run();
15} finally {
16 device.dispose();
17 output.close();
18 input.close();
19}创建 OutputFileTerminal 之前先设置输出工作目录。它将终端输出写入该目录中的
<job_name>.trm,在此示例中为 hello-world.trm。此终端文件与 TeX 日志 hello-world.log 分开。要将终端输出写入其他位置,请向构造函数传入其他
IOutputWorkingDirectory 实现。