Entradas de TeX y directorios de trabajo flexibles en Java

Configure fuentes de entrada y directorios de trabajo del sistema de archivos virtual para compilar documentos TeX y LaTeX mediante Aspose.TeX for Java. Pase archivos TeX de origen, paquetes, macros e imágenes incrustadas directamente desde sistemas de archivos locales, archivos ZIP comprimidos o flujos personalizados en memoria, sin necesidad de instalar distribuciones de TeX de escritorio (como MiKTeX o TeX Live).

 

Al compilar documentos TeX o LaTeX, el motor necesita acceso a los archivos de origen principales (.tex), los subarchivos referenciados (\input{} o \include), los estilos (.sty), las clases (.cls), las fuentes y las imágenes.

Aspose.TeX for Java separa las fuentes de entrada de TeX en directorios de trabajo abstraídos representados por la interfaz IInputWorkingDirectory:

  • El directorio de trabajo de entrada sistema de archivos local utiliza InputFileSystemDirectory para leer archivos de origen TeX y recursos directamente desde carpetas del disco.
  • El directorio de trabajo de entrada archivo ZIP utiliza InputZipDirectory para leer una compilación TeX encapsulada en la que todas las dependencias (.tex, .sty, imágenes) se almacenan en un único archivo .zip.
  • El directorio de trabajo de entrada flujo/memoria personalizado utiliza IInputWorkingDirector para leer sistemas de archivos virtualizados, entradas BLOB de bases de datos o flujos de almacenamiento en la nube (S3/Azure Blob)."

Cargar una entrada de TeX desde un directorio del sistema de archivos local

Especifique una carpeta física del disco como directorio de trabajo de entrada para el motor TeX mediante 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.");
    }
}

Cargar una entrada de TeX desde un archivo ZIP

Compile paquetes TeX independientes directamente desde un archivo .zip sin descomprimirlos en el disco mediante 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.");
    }
}

Pasar el código fuente TeX mediante un flujo de memoria

Para la generación dinámica de LaTeX (como informes renderizados en el servidor o renderizado dinámico de ecuaciones), pase contenido de cadenas sin procesar o flujos directamente a 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.");
    }
}

Instalación y configuración

Integre Aspose.TeX for Java en su proyecto mediante 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>

Preguntas frecuentes

1. ¿Necesito tener instalados MiKTeX, TeX Live o archivos binarios ejecutables externos?

No. Aspose.TeX for Java es un motor Java completamente independiente que ejecuta de forma nativa el análisis, la composición tipográfica y el procesamiento de TeX/LaTeX sin requerir ejecutables nativos externos.

2. ¿Puedo combinar diferentes fuentes de entrada para los archivos principales y los gráficos/estilos externos?

Sí. Puede establecer un InputWorkingDirectory principal (por ejemplo, InputZipDirectory) y configurar rutas de búsqueda auxiliares para paquetes y fuentes mediante los ajustes de configuración de TeXOptions.

3. ¿Cómo maneja Aspose.TeX las rutas relativas en las macros \input{} o \includegraphics{}?

Las rutas relativas definidas dentro de los documentos LaTeX se resuelven automáticamente con respecto a la raíz especificada por la instancia activa de IInputWorkingDirectory.