Interfaz de salida de Aspose.TeX | Java
Consulte Aspose.TeX para Java referencia de API para obtener definiciones formales de implementación de E/S.
Los ejemplos de sistema de archivos, ZIP y terminal componen hello-world.tex en XPS. Establezca inputDirectory en una carpeta con el archivo TeX y outputDirectory en una carpeta de salida existente. Para la salida ZIP, outputZip debe ser un java.nio.file.Path en una carpeta existente. Importe las clases Aspose.TeX usadas en el ejemplo seleccionado, com.aspose.tex.rendering.XpsDevice y las clases necesarias de java.io y java.nio.file. El método que llama al ejemplo debe gestionar o declarar las excepciones. Aplique una licencia según la
guía de licencias para evitar las restricciones de evaluación.
El concepto del directorio de salida.
Dado que las primitivas de E/S del lenguaje TeX sólo pueden tratar con nombres de archivos, Aspose.TeX define un directorio como un mapeo entre nombres y grandes cantidades de datos. Se supone que la gran cantidad de datos son archivos, secuencias, matrices o cualquier otra cosa. La API nos permite especificar los directorios de trabajo de entrada y salida por separado. Proporciona la interfaz general IOutputWorkingDirectory para la salida, que el usuario puede implementar para sus propios fines. También proporciona sus propias implementaciones, que se analizarán a continuación. La interfaz extiende IInputWorkingDirectory, ya que el motor puede primero crear y escribir un archivo y luego volver a leerlo. El método propio de la interfaz getOuputFile() devuelve la secuencia para escribir, a diferencia de la secuencia para leer devuelta por getFile().
Escribir la salida del archivo en el sistema de archivos del disco
Como mencionamos arriba, el valor más común para OutputWorkingDirectory probablemente sería una instancia de la clase OutputFileSystemDirectory.
Así es como lo configuraríamos:
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}Este caso de uso es bastante simple, por lo que no nos detendremos en él por mucho tiempo.
Escribir la salida del archivo en un archivo ZIP
También podemos crear un archivo (o secuencia) y dejar que el motor TeX lo use como un archivo ZIP para almacenar los archivos de salida. Aquí lo tienes:
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}Primero, creamos un flujo de salida para el archivo ZIP. Luego, después de crear las opciones de conversión, configuramos la opción
OutputWorkingDirectory para que sea una instancia de la clase
OutputZipDirectory. El ejemplo almacena hello-world.xps y hello-world.log en el archivo. Después del trabajo, llame a finish() en el directorio de salida antes de cerrar el flujo subyacente. Los ejemplos mantienen abiertos sus flujos y directorios de trabajo hasta que termina el trabajo y después los cierran.
El concepto de terminal de salida.
Hay otra parte importante de la salida: la salida del terminal. En cuanto a este, Aspose.TeX para Java define la interfaz general IOutputTerminal con dos métodos. Uno de ellos devuelve una instancia BufferedWriter. Otro devuelve una instancia OutputStream como flujo subyacente. Las implementaciones proporcionadas de la interfaz se analizan a continuación.
Escribir la salida del terminal en la consola
Para hacer esto, necesitamos configurar la opción TerminalOut para que sea una instancia de la clase 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 es el valor predeterminado de esta opción. El ejemplo lo selecciona explícitamente y escribe la salida del terminal en la consola durante la conversión. Los cuatro ejemplos se ejecutan sin interacción; los ejemplos de sistema de archivos y ZIP capturan la salida del terminal en memoria.
Escribir la salida del terminal en un archivo
A diferencia del terminal de entrada, Aspose.TeX para Java proporciona una implementación de IOutputTerminal, que nos permite escribir la salida del terminal en un archivo en algún directorio de salida.
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}Establezca el directorio de trabajo de salida antes de crear OutputFileTerminal. Escribe la salida del terminal en
<job_name>.trm, aquí hello-world.trm, en ese directorio. Este archivo del terminal es independiente de la transcripción TeX hello-world.log. Para escribir la salida del terminal en otro lugar, pase al constructor otra implementación de
IOutputWorkingDirectory.