Interface de saída do Aspose.TeX | .NET
Consulte Aspose.TeX para .NET Referência da API para obter definições formais de implementação de E/S.
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 volumes 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 lê-lo novamente. O próprio método da interface GetOutputFile() retorna o fluxo para gravar, em oposição ao fluxo para ler devolvido por GetFile().
Escrevendo a saída do arquivo no sistema de arquivos de disco
Como mencionamos acima, o valor mais comum para o OutputDirectory provavelmente seria uma instância da classe OutputFileSystemDirectory.
Aqui está como nós o definiríamos:
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);Este caso de uso é bastante simples, então não há mais necessidade de se concentrar nele.
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// 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);Primeiro, criamos um fluxo de saída para o arquivo ZIP. Então, após criar as opções de conversão, definimos a opção OutputWorkingDirectory para ser uma instância da classe OutputZipDirectory.
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 .NET define a interface geral IOutputTerminal com apenas uma propriedade que retorna uma instância de implementação TextWriter. As implementações fornecidas 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// 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.Novamente, esse é o valor padrão da opção; portanto, não há necessidade real de especificá-lo. Devido a isso, esta seção serve apenas fins de demonstração.
Escrevendo a saída do terminal em um arquivo
Ao contrário do terminal de entrada, Aspose.TeX para .NET fornece uma implementação do IOutputTerminal, que nos permite gravar a saída do terminal em um arquivo em algum diretório de saída.
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);Aqui, pedimos ao mecanismo TeX que escreva a saída do terminal no arquivo com o nome <job_name>.trm, que será armazenado no mesmo diretório de saída que especificamos para o restante da saída. Mas isso não é necessário. Podemos também passar em qualquer outra instância de qualquer implementação do IOutputTerminal para o construtor.