Saídas TeX flexíveis e diretórios de trabalho de saída em Java

Configure destinos de saída e mecanismos de armazenamento para a compilação de documentos TeX e LaTeX usando o Aspose.Font para Java. Salve documentos renderizados (PDF, XPS, SVG, PNG, JPEG, TIFF, BMP) e artefatos auxiliares de compilação (.log, .aux) diretamente em pastas físicas do disco, arquivos ZIP compactados ou fluxos personalizados na memória, sem precisar de instalações do TeX para desktop.

 

Durante a compilação, o mecanismo de composição tipográfica TeX produz duas categorias principais de saída:

  • Arquivos de saída primários: O documento de destino (por exemplo, .pdf, .xps ou sequências de imagens).
  • Arquivos de saída auxiliares: Logs (.log), dados auxiliares (.aux) e arquivos intermediários gerados pelas macros do LaTeX.

O Aspose.TeX para Java encapsula os destinos de saída em diretórios de trabalho abstratos por meio da interface IOutputWorkingDirectory, permitindo que os desenvolvedores direcionem os fluxos de saída dinamicamente. Tipos de diretórios de saída compatíveis:

  • O diretório de trabalho de saída Sistema de arquivos local usa OutputFileSystemDirectory para salvar documentos renderizados e arquivos de log diretamente em pastas do disco local.
  • O diretório de trabalho de saída Arquivo ZIP usa OutputZipDirectory para empacotar documentos de saída, logs e recursos gerados em um único arquivo .zip.
  • O diretório de trabalho de saída Fluxo/memória personalizada usa IOutputWorkingDirectory para capturar a saída diretamente na memória, em BLOBs de banco de dados ou em fluxos de nuvem (S3/Azure Blob).

Salvar a saída TeX em um diretório do sistema de arquivos local

Direcione as saídas do documento principal e os logs de compilação auxiliares para uma pasta física usando OutputFileSystemDirectory.

import com.aspose.tex.*;
import java.io.IOException;

public class TeXOutputToFileSystem {
    public static void main(String[] args) throws IOException {
        // Initialize options for LaTeX format using ObjectTeX
        TeXOptions options = TeXOptions.consoleAppOptions(TeXConfig.objectLaTeX());

        // Set input working directory
        options.setInputWorkingDirectory(new InputFileSystemDirectory("C:/TeXProject/Input/"));

        // Set output working directory for compiled documents and logs
        String outputDirPath = "C:/TeXProject/Output/";
        options.setOutputWorkingDirectory(new OutputFileSystemDirectory(outputDirPath));

        // Execute TeX job producing PDF output
        TeXJob job = new TeXJob("main", new PdfDevice(), options);
        job.run();

        System.out.println("TeX compilation complete. Outputs saved to: " + outputDirPath);
    }
}

Salvar a saída TeX diretamente em um arquivo ZIP

Empacote documentos renderizados juntamente com logs intermediários e imagens geradas em um arquivo ZIP compactado usando OutputZipDirectory.

import com.aspose.tex.*;
import java.io.FileOutputStream;
import java.io.IOException;

public class TeXOutputToZipArchive {
    public static void main(String[] args) throws IOException {
        // Initialize LaTeX conversion options
        TeXOptions options = TeXOptions.consoleAppOptions(TeXConfig.objectLaTeX());
        options.setInputWorkingDirectory(new InputFileSystemDirectory("C:/TeXProject/Input/"));

        // Create output stream for destination ZIP file
        FileOutputStream zipStream = new FileOutputStream("C:/TeXProject/OutputBundle.zip");

        // Set output working directory to ZIP stream
        options.setOutputWorkingDirectory(new OutputZipDirectory(zipStream));

        // Run job targeting PDF rendering
        TeXJob job = new TeXJob("main", new PdfDevice(), options);
        job.run();

        zipStream.close();
        System.out.println("TeX outputs and logs successfully bundled into OutputBundle.zip.");
    }
}

Transmitir a saída TeX para a memória/ByteArray

Para aplicações na nuvem ou web, capture documentos renderizados diretamente como fluxos de bytes sem gravar arquivos no armazenamento do disco local.

import com.aspose.tex.*;
import java.io.ByteArrayOutputStream;

public class TeXOutputToMemoryStream {
    public static void main(String[] args) throws Exception {
        // Configure conversion options
        TeXOptions options = TeXOptions.consoleAppOptions(TeXConfig.objectLaTeX());
        options.setInputWorkingDirectory(new InputFileSystemDirectory("C:/TeXProject/Input/"));

        // Initialize memory output stream device
        ByteArrayOutputStream outputStream = new ByteArrayOutputStream();
        
        // Configure output working directory for log/auxiliary files
        options.setOutputWorkingDirectory(new OutputFileSystemDirectory("C:/TeXProject/Logs/"));

        // Run compilation directing PDF output to byte array stream
        TeXJob job = new TeXJob("main", new PdfDevice(outputStream), options);
        job.run();

        byte[] pdfBytes = outputStream.toByteArray();
        System.out.println("Generated PDF size in memory: " + pdfBytes.length + " bytes.");
    }
}

Instalação e configuração

Integre o Aspose.TeX para Java ao seu projeto usando o Maven:

Package Manager Console Command

<repository>
    <id>AsposeJavaAPI</id>
    <name>Aspose Java API</name>
    <url>https://repository.aspose.com/repo/</url>
</repository>

<dependency>
    <groupId>com.aspose</groupId>
    <artifactId>aspose-tex</artifactId>
    <version>Latest</version>
</dependency>

FAQ

1. Quais dispositivos de destino de saída são compatíveis com o Aspose.TeX for Java?

O Aspose.TeX é compatível com vários dispositivos de saída, incluindo PdfDevice (documentos PDF), XpsDevice (documentos XPS), SvgDevice (gráficos vetoriais escaláveis) e ImageDevice (imagens raster, como PNG, JPEG, TIFF e BMP).

2. Onde os arquivos auxiliares de compilação (.log, .aux) são salvos?

Os arquivos auxiliares são gravados no diretório especificado em TeXOptions.setOutputWorkingDirectory(). Se você usar OutputZipDirectory, os arquivos .log e .aux serão empacotados diretamente dentro do arquivo ZIP junto com o documento renderizado.

3. Posso suprimir ou redirecionar os arquivos de saída de log?

Sim. Você pode personalizar o tratamento da saída do terminal/log por meio de TeXOptions.setTerminalOut() ou atribuir uma implementação personalizada de IOutputWorkingDirectory para descartar ou redirecionar os logs de compilação.