Grafiken mit Java in LaTeX-Dokumente einbetten

Fügen Sie hochauflösende Rasterbilder (PNG, JPEG, BMP) und Vektorgrafiken (EPS, PDF) mit Aspose.TeX for Java in LaTeX-Dokumente ein. Durch die Verwendung nativer LaTeX-Pakete wie graphicx und die Konfiguration von Eingabearbeitsverzeichnissen können Entwickler Dokumente mit eingebetteten Diagrammen, Abbildungen, Fotos und Vektorgrafiken nahtlos kompilieren und ausgabebereite PDF-, XPS- und Bilddateien für die Veröffentlichung erstellen.

 

Beim Kompilieren von LaTeX-Dokumenten mit grafischen Elementen löst Aspose.TeX for Java referenzierte Bilddateien relativ zum konfigurierten IInputWorkingDirectory auf.

  • Für Fotos, gerasterte Screenshots und Webgrafiken wählen Sie PNG/JPEG-Formate, die mithilfe der Befehle \usepackage{graphicx} - \includegraphics{figure.png} eingebettet werden.
  • Für hochpräzise Vektordiagramme und CAD-/wissenschaftliche Diagramme wählen Sie das EPS-Format, das mithilfe der Befehle \usepackage{graphicx} - \includegraphics{diagram.eps} eingebettet wird.
  • Für die Einbettung älterer Bitmap-Bilder wählen Sie das BMP/TIFF-Format, das mithilfe der Befehle \usepackage{graphicx} - \includegraphics{image.bmp} eingebettet wird.

Rasterbilder (PNG/JPEG) in LaTeX einbetten

Um Standard-Rasterbilder einzubetten, fügen Sie das graphicx-Paket in die Präambel Ihres LaTeX-Dokuments ein und geben Sie den Dateinamen des Zielbildes in \includegraphics{} an.

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

Vektorgrafiken (EPS) in LaTeX einbetten

Aspose.TeX verarbeitet Encapsulated PostScript (.eps)-Grafiken nativ, wenn die Kompilierung über die ObjectLaTeX-Format-Engine erfolgt.

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

Grafikressourcen aus ZIP-Archiven laden

Verpacken Sie TeX-Quelldateien, Makropakete und dynamische Bilder gemeinsam in einem .zip-Archiv und weisen Sie Aspose.TeX an, Grafikabhängigkeiten direkt aus dem Speicher oder komprimierten Speicher aufzulösen.

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

Installation und Einrichtung

Integrieren Sie Aspose.TeX for Java mithilfe von Maven in Ihr Projekt:

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>

Häufig gestellte Fragen

1. Was passiert, wenn ich in TeXOptions keinen Auftragsnamen angebe?

Wenn über setJobName() kein Auftragsname explizit konfiguriert wurde, verwendet Aspose.TeX standardmäßig den Namen der Haupt-Eingabedatei (z. B. erzeugt main.tex die Dateien main.pdf und main.log).

2. Wie kann ich die Erstellung der Kompilierungsdatei .log vollständig deaktivieren?

Setzen Sie options.setLogOutput(false), bevor Sie TeXJob erstellen und ausführen. Dadurch wird verhindert, dass die Engine zusätzliche Protokolldateien auf dem Datenträger oder im Ausgabearbeitsverzeichnis erzeugt.

3. Kann ich TeX-Terminalmeldungen in Server-/Headless-Umgebungen erfassen?

Ja. Durch die Zuweisung eines benutzerdefinierten OutputMemoryTerminal oder die Implementierung von IOutputTerminal können Sie alle Terminal-stdout/stderr-Meldungen an das Enterprise-Logging-System Ihres Servers weiterleiten (z. B. Log4j oder SLF4J).