Aspose.TeX 的输出接口 | .NET
请参阅 Aspose.TeX for .NET 的 API 参考文档,了解 I/O 实现的正式定义。
输出目录的概念
由于 TeX 语言的 I/O 原语只能处理文件名,Aspose.TeX 将目录定义为名称与数据块之间的映射。数据块可以是文件、流、数组或其他任何形式。API 允许我们分别指定输入和输出工作目录。它为输出提供了通用的 IOutputWorkingDirectory 接口,用户可以根据自己的需求实现该接口。它还提供了自己的实现,下面将进行讨论。该接口继承自 IInputWorkingDirectory,因为引擎可能先创建并写入文件,然后再读取。接口的 GetOutputFile() 方法返回用于写入的流,而不是由 GetFile() 返回的读取流。
将文件输出写入磁盘文件系统
正如我们在 上文提到的,最常用的 OutputDirectory 值通常是 OutputFileSystemDirectory 类的实例。
1// Writing file output to the disk file system
2
3// Create conversion options instance.
4TeXOptions options = TeXOptions.ConsoleAppOptions(TeXConfig.ObjectTeX());
5// ...
6// Specify a file system working directory for the output.
7options.OutputWorkingDirectory = new OutputFileSystemDirectory(OutputDir);此用例非常简单,因而无需再做详细说明。
将文件输出写入 ZIP 压缩包
我们也可以创建一个文件(或流),让 TeX 引擎将其用作 ZIP 压缩包来存储输出文件。示例如下:
1// Writing file output to a ZIP archive
2
3// Open the stream for the ZIP archive that will serve as the output working directory.
4using (Stream outZipStream = File.Open(Path.Combine(OutputDir, "zip-pdf-out.zip"), FileMode.Create))
5{
6 // Create conversion options instance.
7 TeXOptions options = TeXOptions.ConsoleAppOptions(TeXConfig.ObjectTeX());
8 // ...
9 // Specify a ZIP archive working directory for the output.
10 options.OutputWorkingDirectory = new OutputZipDirectory(outZipStream);首先,为 ZIP 文件创建输出流。随后,在创建转换选项后,我们将 OutputWorkingDirectory 选项设置为 OutputZipDirectory 类的实例。
输出终端的概念
输出还有另一个重要部分——终端输出。针对该部分,Aspose.TeX for .NET 定义了通用的 IOutputTerminal 接口,该接口仅包含一个返回 TextWriter 实例的属性。下面将讨论提供的实现。
将终端输出写入控制台
为实现该功能,需要将 TerminalOut 选项设置为 OutputConsoleTerminal 类的实例。
1// Writing terminal output to the console
2
3// Create conversion options instance.
4TeXOptions options = TeXOptions.ConsoleAppOptions(TeXConfig.ObjectTeX());
5// ...
6// Specify the console as the output terminal.
7options.TerminalOut = new OutputConsoleTerminal(); // Default value. Arbitrary assignment.同样,这也是该选项的默认值,实际上无需显式指定。因此本节仅作演示用途。
将终端输出写入文件
不同于输入终端,Aspose.TeX for .NET 提供了 IOutputTerminal 的实现,使我们能够将终端输出写入某个输出目录中的文件。
1// Writing terminal output to a file
2
3// Create conversion options instance.
4TeXOptions options = TeXOptions.ConsoleAppOptions(TeXConfig.ObjectTeX());
5// ...
6// Specify that the terminal output must be written to a file in the output working directory.
7// The file name is <job_name>.trm.
8options.TerminalOut = new OutputFileTerminal(options.OutputWorkingDirectory);此处我们让 TeX 引擎将终端输出写入名为 <job_name>.trm 的文件,该文件将存储在我们为其他输出指定的同一输出目录中。但这并非必须。我们同样可以向构造函数传入任何其他 IOutputTerminal 实现的实例。