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.