Incrustar gráficos en documentos LaTeX con Java

Incorpore imágenes rasterizadas de alta resolución (PNG, JPEG, BMP) y figuras vectoriales (EPS, PDF) en documentos LaTeX mediante Aspose.TeX for Java. Al utilizar paquetes nativos de LaTeX como graphicx y configurar directorios de trabajo de entrada, los desarrolladores pueden compilar fácilmente documentos con gráficos, figuras, fotografías y gráficos vectoriales incrustados para obtener resultados en PDF, XPS e imágenes listos para publicación.

 

Al compilar documentos LaTeX que contienen elementos gráficos, Aspose.TeX for Java resuelve los archivos de imagen referenciados en relación con el IInputWorkingDirectory configurado.

  • Para fotografías, capturas de pantalla rasterizadas y gráficos web, elija los formatos PNG/JPEG incrustados mediante los comandos \usepackage{graphicx} - \includegraphics{figure.png}.
  • Para diagramas vectoriales de alta precisión y gráficos CAD/científicos, elija el formato EPS incrustado mediante los comandos \usepackage{graphicx} - \includegraphics{diagram.eps}.
  • Para incrustar imágenes de mapa de bits antiguas, elija el formato BMP/TIFF incrustado mediante los comandos \usepackage{graphicx} - \includegraphics{image.bmp}.

Incrustar imágenes rasterizadas (PNG/JPEG) en LaTeX

Para incrustar imágenes rasterizadas estándar, incluya el paquete graphicx en el preámbulo de su documento LaTeX y especifique el nombre del archivo de imagen de destino en \includegraphics{}.

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

public class EmbedRasterGraphicsInLaTeX {
    public static void main(String[] args) throws Exception {
        // Create LaTeX document string referencing an image file 'sample.png'
        String latexCode = "\\documentclass{article}\n" +
                           "\\usepackage{graphicx}\n" +
                           "\\begin{document}\n" +
                           "\\section{Graphics Rendering Demo}\n" +
                           "Here is an embedded raster image:\n\n" +
                           "\\begin{figure}[h]\n" +
                           "  \\centering\n" +
                           "  \\includegraphics[width=0.5\\textwidth]{sample.png}\n" +
                           "  \\caption{Sample PNG Image in LaTeX}\n" +
                           "\\end{figure}\n" +
                           "\\end{document}";

        ByteArrayInputStream inputStream = new ByteArrayInputStream(latexCode.getBytes(StandardCharsets.UTF_8));

        // Initialize conversion options for ObjectLaTeX
        TeXOptions options = TeXOptions.consoleAppOptions(TeXConfig.objectLaTeX());

        // Set input working directory where 'sample.png' is located
        options.setInputWorkingDirectory(new InputFileSystemDirectory("C:/TeXProject/Images/"));

        // Set output working directory for compiled PDF
        options.setOutputWorkingDirectory(new OutputFileSystemDirectory("C:/TeXProject/Output/"));

        // Execute TeX job
        TeXJob job = new TeXJob(inputStream, new PdfDevice(), options);
        job.run();

        System.out.println("LaTeX document with embedded PNG successfully compiled to PDF.");
    }
}

Incrustar gráficos vectoriales (EPS) en LaTeX

Aspose.TeX procesa de forma nativa los gráficos Encapsulated PostScript (.eps) al compilar mediante el motor de formato ObjectLaTeX.

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

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

        // Configure directory paths containing .tex source and .eps graphics
        options.setInputWorkingDirectory(new InputFileSystemDirectory("C:/TeXProject/SourceWithEPS/"));
        options.setOutputWorkingDirectory(new OutputFileSystemDirectory("C:/TeXProject/Output/"));

        // Run job for 'document_with_eps.tex' containing \includegraphics{vector_chart.eps}
        TeXJob job = new TeXJob("document_with_eps", new PdfDevice(), options);
        job.run();

        System.out.println("LaTeX document with vector EPS figure compiled successfully.");
    }
}

Cargar recursos gráficos desde archivos ZIP

Agrupe los archivos de origen TeX, los paquetes de macros y las imágenes dinámicas en un archivo .zip y configure Aspose.TeX para resolver las dependencias gráficas directamente desde la memoria o el almacenamiento comprimido.

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

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

        // Open input ZIP archive containing 'main.tex' and 'figure.png'
        FileInputStream zipStream = new FileInputStream("C:/TeXProject/ProjectWithAssets.zip");
        options.setInputWorkingDirectory(new InputZipDirectory(zipStream, "src"));

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

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

        zipStream.close();
        System.out.println("Compiled LaTeX document with images embedded directly from ZIP file.");
    }
}

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. ¿Qué sucede si no especifico un nombre de trabajo en TeXOptions?

Si no se configura explícitamente un nombre de trabajo mediante setJobName(), Aspose.TeX utiliza de forma predeterminada el nombre del archivo de entrada principal (por ejemplo, main.tex genera main.pdf y main.log).

2. ¿Cómo puedo desactivar completamente la creación del archivo de compilación .log?

Establezca options.setLogOutput(false) antes de crear y ejecutar TeXJob. Esto evita que el motor genere archivos de registro auxiliares en el disco o en el directorio de trabajo de salida.

3. ¿Puedo capturar mensajes de terminal de TeX en entornos de servidor/sin interfaz gráfica?

Sí. Al asignar un OutputMemoryTerminal personalizado o implementar IOutputTerminal, puede dirigir todos los mensajes stdout/stderr del terminal al sistema de registro empresarial de su servidor (por ejemplo, Log4j o SLF4J).