Interface de entrada 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 e ZIP compõem hello-world.tex em hello-world.xps. Defina inputDirectory como uma pasta com o arquivo TeX e outputDirectory como uma pasta de saída existente. Para entrada ZIP, inputZip deve ser um java.nio.file.Path que aponte para um arquivo contendo in/hello-world.tex. 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 do diretório de entrada

Como as primitivas de E/S do idioma TEX só podem lidar com nomes de arquivos, aspose.tex para java 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 iinputWorkingDirectory, que o usuário pode implementar para seus próprios fins. Ele também fornece suas próprias implementações, que serão discutidas abaixo. A interface define o método getfile(), que retorna o fluxo de dados e determina o nome completo do arquivo, enquanto toma um nome, hipoteticamente diferente, como o primeiro argumento, que, de fato, é a chave de mapeamento.

Obtendo entrada de arquivo do sistema de arquivos de disco

Aqui está como faríamos isso:

 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.

Obtendo entrada de arquivo de um arquivo zip

Também podemos colocar os arquivos de entrada em um arquivo zip e considerá -lo um diretório de entrada. Nesse caso, devemos prosseguir da seguinte forma:

 1// Read hello-world.tex from the in/ folder of a ZIP archive.
 2// inputZip is a java.nio.file.Path; outputDirectory is an existing output folder.
 3TeXJobResult result;
 4try (InputStream zipStream = Files.newInputStream(inputZip)) {
 5    TeXOptions options = TeXOptions.consoleAppOptions(TeXConfig.objectTeX());
 6    InputZipDirectory input = new InputZipDirectory(zipStream, "in");
 7    OutputFileSystemDirectory output = new OutputFileSystemDirectory(outputDirectory);
 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    } finally {
16        device.dispose();
17        output.close();
18        input.close();
19    }
20}

Primeiro, criamos o fluxo que contém o arquivo zip. Então, depois de criar as opções de conversão, definimos a opção InputWorkingDirectory para ser uma instância da classe InputZipDirectory. O segundo argumento do construtor é o caminho base dentro do arquivo. Se queremos que todo o arquivo seja um diretório de entrada, devemos passar na string vazia. O exemplo mantém o fluxo ZIP e o diretório de entrada abertos até o término do trabalho TeX e depois os fecha. Ele é executado sem interação e captura a saída do terminal na memória.

O conceito do terminal de entrada

Agora, lembre -se de que há também a entrada do terminal. Quanto a este, Aspose.TeX para Java define a interface geral IInputTerminal como tendo dois métodos. Um deles retorna uma instância BufferedReader. Outro método retorna um inputStream como o fluxo subjacente. As implementações fornecidas da interface são discutidas abaixo.

Obtendo a entrada terminal do console

Para fazer isso, precisamos definir a opção Terminalin para ser uma instância da classe inputConsoleterminal.

1// Use the console for terminal input; this is also the default.
2TeXOptions options = TeXOptions.consoleAppOptions(TeXConfig.objectTeX());
3options.setTerminalIn(new InputConsoleTerminal());

InputConsoleTerminal é o valor padrão desta opção. Este exemplo mostra apenas a configuração do terminal e não executa um trabalho. Um trabalho que solicita entrada do terminal precisa de dados do usuário ou de uma implementação personalizada do terminal. Os exemplos de sistema de arquivos e ZIP acima são executados sem interação com arquivos de entrada completos.

Teoricamente, se tivermos um arquivo tex interativo (ou script) com comportamento previsível, podemos querer implementar uma versão do terminal de entrada que contenha um script complementar para responder às solicitações do mecanismo Tex. Experimente sua mão quando tiver tempo!