Incorporare elementi grafici nei documenti LaTeX utilizzando Java

Incorpora immagini raster ad alta risoluzione (PNG, JPEG, BMP) e figure vettoriali (EPS, PDF) nei documenti LaTeX utilizzando Aspose.TeX for Java. Utilizzando pacchetti LaTeX nativi come graphicx e configurando le directory di lavoro di input, gli sviluppatori possono compilare facilmente documenti con grafici, figure, fotografie ed elementi grafici vettoriali incorporati, ottenendo output PDF, XPS e immagini pronti per la pubblicazione.

 

Durante la compilazione di documenti LaTeX contenenti elementi grafici, Aspose.TeX for Java risolve i file immagine referenziati rispetto alla IInputWorkingDirectory configurata.

  • Per fotografie, schermate raster e grafica web, scegli i formati PNG/JPEG incorporati utilizzando i comandi \usepackage{graphicx} - \includegraphics{figure.png}.
  • Per diagrammi vettoriali ad alta precisione e grafici CAD/scientifici, scegli il formato EPS incorporato utilizzando i comandi \usepackage{graphicx} - \includegraphics{diagram.eps}.
  • Per incorporare immagini bitmap legacy, scegli il formato BMP/TIFF incorporato utilizzando i comandi \usepackage{graphicx} - \includegraphics{image.bmp}.

Incorporare immagini raster (PNG/JPEG) in LaTeX

Per incorporare immagini raster standard, includi il pacchetto graphicx nel preambolo del documento LaTeX e specifica il nome del file immagine di destinazione in \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.");
    }
}

Incorporare elementi grafici vettoriali (EPS) in LaTeX

Aspose.TeX elabora nativamente gli elementi grafici Encapsulated PostScript (.eps) durante la compilazione tramite il motore del 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.");
    }
}

Caricare risorse grafiche da archivi ZIP

Raggruppa i file sorgente TeX, i pacchetti di macro e le immagini dinamiche in un archivio .zip e configura Aspose.TeX affinché risolva le dipendenze grafiche direttamente dalla memoria o da uno spazio di archiviazione compresso.

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.");
    }
}

Installazione e configurazione

Integra Aspose.TeX for Java nel tuo progetto utilizzando 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. Cosa succede se non si specifica un nome del job in TeXOptions?

Se un nome del job non viene configurato esplicitamente tramite setJobName(), Aspose.TeX utilizza per impostazione predefinita il nome del file di input principale (ad esempio, main.tex produce main.pdf e main.log).

2. Come posso disabilitare completamente la creazione del file di compilazione .log?

Impostare options.setLogOutput(false) prima di creare ed eseguire TeXJob. Ciò impedisce al motore di generare file di log ausiliari sul disco o nella directory di lavoro di output.

3. È possibile acquisire i messaggi del terminale TeX in ambienti server/headless?

Sì. L’assegnazione di un OutputMemoryTerminal personalizzato o l’implementazione di IOutputTerminal consente di indirizzare tutti i messaggi stdout/stderr del terminale al sistema di logging aziendale del server (ad esempio, Log4j o SLF4J).