Interface de saída do Aspose.TeX | Java

Consulte Aspose.TeX para java Referência da API para obter definições formais de implementação de E/S.

Os exemplos de sistema de arquivos, ZIP e terminal compõem hello-world.tex em XPS. Defina inputDirectory como uma pasta com o arquivo TeX e outputDirectory como uma pasta de saída existente. Para saída ZIP, outputZip deve ser um java.nio.file.Path em uma pasta existente. Importe as classes Aspose.TeX usadas no exemplo escolhido, com.aspose.tex.rendering.XpsDevice e as classes necessárias de java.io e java.nio.file. O método chamador deve tratar ou declarar as exceções. Aplique uma licença conforme o guia de licenciamento para evitar as restrições de avaliação.

O conceito de diretório de saída

Como as primitivas de E/S do idioma TEX só podem lidar com nomes de arquivos, Aspose.TeX define um diretório como um mapeamento entre nomes e volumes de dados. Os ma tetos de dados devem ser arquivos, fluxos, matrizes ou qualquer outra coisa. A API nos permite especificar os diretórios de trabalho de entrada e saída separadamente. Ele fornece a interface Geral ioutputworkingDirectory para a saída, que o usuário pode implementar para seus próprios propósitos. Ele também fornece suas próprias implementações, que serão discutidas abaixo. A interface estende iInputWorkingDirectory, pois o mecanismo pode primeiro criar e escrever um arquivo e depois leia -o novamente. O próprio método da interface getouputfile() retorna o fluxo para gravar, em oposição ao fluxo para ler retornado por getfile().

Escrevendo a saída do arquivo no sistema de arquivos de disco

Como mencionamos acima, o valor mais comum para o outputWorkingDirectory provavelmente seria uma instância da classe outputFilesystemDirectory.

Aqui está como nós o definirí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 é bastante simples, por isso não vamos nos debruçar por um longo tempo.

Escrevendo a saída do arquivo em um arquivo zip

Também podemos criar um arquivo (ou fluxo) e deixar o mecanismo TEX usá -lo como um arquivo zip para armazenar os arquivos de saída. Aqui está:

 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}

Primeiro, criamos um fluxo de saída para o arquivo zip. Então, depois de criar as opções de conversão, definimos a opção OutputWorkingDirectory para ser uma instância da classe outputzipDirectory. O exemplo armazena hello-world.xps e hello-world.log no arquivo. Após o trabalho, chame finish() no diretório de saída antes de fechar o fluxo subjacente. Os exemplos mantêm seus fluxos e diretórios de trabalho abertos até o término do trabalho e depois os fecham.

O conceito do terminal de saída

Há outra parte importante da saída-a saída do terminal. Quanto a este, Aspose.TeX para java define a interface Geral ioutputTerminal como tendo dois métodos. Um deles retorna uma instância BufferWriter. Outro retorna uma instância outputStream como o fluxo subjacente. As implementações fornecidas da interface são discutidas abaixo.

Escrevendo saída do terminal para o console

Para fazer isso, precisamos definir a opção Terminalout para ser uma instância da classe 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 é o valor padrão desta opção. O exemplo o seleciona explicitamente e escreve a saída do terminal no console durante a conversão. Os quatro exemplos são executados sem interação; os exemplos de sistema de arquivos e ZIP capturam a saída do terminal na memória.

Escrevendo a saída do terminal em um arquivo

Ao contrário do terminal de entrada, Aspose.TeX para Java fornece uma implementação do ioutputMerminal, que nos permite gravar a saída do terminal em um arquivo em algum diretório de saída.

 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}

Defina o diretório de trabalho de saída antes de criar OutputFileTerminal. Ele escreve a saída do terminal em <job_name>.trm, aqui hello-world.trm, nesse diretório. Esse arquivo do terminal é separado da transcrição TeX hello-world.log. Para escrever a saída do terminal em outro local, passe ao construtor outra implementação de IOutputWorkingDirectory.