Entradas TeX e diretórios de trabalho flexíveis em Java

Configure fontes de entrada e diretórios de trabalho do sistema de arquivos virtual para a compilação de documentos TeX e LaTeX usando o Aspose.TeX for Java. Passe arquivos-fonte TeX, pacotes, macros e imagens incorporadas diretamente de sistemas de arquivos locais, arquivos ZIP compactados ou fluxos personalizados em memória, sem precisar instalar distribuições TeX para desktop (como MiKTeX ou TeX Live).

 

Ao compilar documentos TeX ou LaTeX, o mecanismo precisa acessar os arquivos-fonte principais (.tex), subarquivos referenciados (\input{} ou \include), estilos (.sty), classes (.cls), fontes e imagens.

O Aspose.TeX for Java separa as fontes de entrada TeX em diretórios de trabalho abstraídos, representados pela interface IInputWorkingDirectory:

  • O diretório de trabalho de entrada sistema de arquivos local usa InputFileSystemDirectory para ler arquivos-fonte TeX e recursos diretamente de pastas no disco.
  • O diretório de trabalho de entrada arquivo ZIP usa InputZipDirectory para ler uma compilação TeX encapsulada na qual todas as dependências (.tex, .sty, imagens) são armazenadas em um único arquivo .zip.
  • O diretório de trabalho de entrada fluxo/memória personalizado usa IInputWorkingDirector para ler sistemas de arquivos virtualizados, entradas BLOB de bancos de dados ou fluxos de armazenamento em nuvem (S3/Azure Blob)."

Carregar entrada TeX de um diretório do sistema de arquivos local

Especifique uma pasta física no disco como o diretório de trabalho de entrada para o mecanismo TeX usando InputFileSystemDirectory.

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

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

        // Set the input working directory to a local file folder
        String inputDirPath = "C:/TeXProject/Input/";
        options.setInputWorkingDirectory(new InputFileSystemDirectory(inputDirPath));

        // Set output working directory for compiled results (PDF/XPS/Images)
        String outputDirPath = "C:/TeXProject/Output/";
        options.setOutputWorkingDirectory(new OutputFileSystemDirectory(outputDirPath));

        // Run TeX compilation for 'main.tex'
        TeXJob job = new TeXJob("main", new PdfDevice(), options);
        job.run();

        System.out.println("TeX compilation from local directory completed successfully.");
    }
}

Carregar entrada TeX de um arquivo ZIP

Compile pacotes TeX independentes diretamente de um arquivo .zip sem extraí-los para o disco usando InputZipDirectory.

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

public class TeXInputFromZipArchive {
    public static void main(String[] args) throws IOException {
        // Initialize LaTeX conversion options
        TeXOptions options = TeXOptions.consoleAppOptions(TeXConfig.objectLaTeX());

        // Open input ZIP stream containing main.tex, packages, and assets
        FileInputStream zipStream = new FileInputStream("C:/TeXProject/ProjectBundle.zip");

        // Set input working directory to the ZIP archive stream
        options.setInputWorkingDirectory(new InputZipDirectory(zipStream, "subfolder_inside_zip"));

        // Define output directory on disk
        options.setOutputWorkingDirectory(new OutputFileSystemDirectory("C:/TeXProject/Output/"));

        // Execute TeX job referencing 'main.tex' inside the ZIP
        TeXJob job = new TeXJob("main", new PdfDevice(), options);
        job.run();

        zipStream.close();
        System.out.println("TeX compilation directly from ZIP archive completed.");
    }
}

Passar a fonte TeX por meio de um fluxo de memória

Para geração dinâmica de LaTeX (como relatórios renderizados no servidor ou renderização dinâmica de equações), passe conteúdo de string bruta ou fluxos diretamente para TeXJob.

import com.aspose.tex.*;
import java.io.ByteArrayInputStream;
import java.io.InputStream;
import java.nio.charset.StandardCharsets;

public class TeXInputFromMemoryStream {
    public static void main(String[] args) throws Exception {
        // Create dynamic LaTeX content string
        String latexCode = "\\documentclass{article}\n" +
                           "\\begin{document}\n" +
                           "\\section{Dynamic Report}\n" +
                           "Hello World from Aspose.TeX for Java!\n" +
                           "\\end{document}";

        InputStream inputSteam = new ByteArrayInputStream(latexCode.getBytes(StandardCharsets.UTF_8));

        // Configure options
        TeXOptions options = TeXOptions.consoleAppOptions(TeXConfig.objectLaTeX());
        options.setOutputWorkingDirectory(new OutputFileSystemDirectory("C:/TeXProject/Output/"));

        // Run job passing stream directly
        TeXJob job = new TeXJob(inputSteam, new PdfDevice(), options);
        job.run();

        System.out.println("Dynamic LaTeX stream successfully compiled to PDF.");
    }
}

Instalação e configuração

Integre o Aspose.TeX for 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. Preciso instalar o MiKTeX, o TeX Live ou binários executáveis externos?

Não. O Aspose.TeX for Java é um mecanismo Java completamente independente que executa nativamente a análise, a composição tipográfica e a renderização de TeX/LaTeX sem exigir executáveis nativos externos.

2. Posso combinar diferentes fontes de entrada para os arquivos principais e gráficos/estilos externos?

Sim. Você pode definir um InputWorkingDirectory principal (por exemplo, InputZipDirectory) e configurar caminhos auxiliares de pesquisa de pacotes/fontes usando as configurações de TeXOptions.

3. Como o Aspose.TeX lida com caminhos relativos nas macros \input{} ou \includegraphics{}?

Os caminhos relativos definidos nos documentos LaTeX são resolvidos automaticamente em relação à raiz especificada pela instância IInputWorkingDirectory ativa.