Flexible TeX-Eingaben und Arbeitsverzeichnisse in Java

Konfigurieren Sie Eingabequellen und virtuelle Dateisystem-Arbeitsverzeichnisse für die Kompilierung von TeX- und LaTeX-Dokumenten mit Aspose.TeX for Java. Übergeben Sie TeX-Quelldateien, Pakete, Makros und eingebettete Bilder direkt aus lokalen Dateisystemen, komprimierten ZIP-Archiven oder benutzerdefinierten In-Memory-Streams, ohne Desktop-TeX-Distributionen (wie MiKTeX oder TeX Live) installieren zu müssen.

 

Beim Kompilieren von TeX- oder LaTeX-Dokumenten benötigt die Engine Zugriff auf die wichtigsten Quelldateien (.tex), referenzierte Unterdateien (\input{} oder \include), Stile (.sty), Klassen (.cls), Schriftarten und Bilder.

Aspose.TeX for Java trennt TeX-Eingabequellen in abstrahierte Arbeitsverzeichnisse, die durch die Schnittstelle IInputWorkingDirectory dargestellt werden:

  • Eingabearbeitsverzeichnis Lokales Dateisystem verwendet InputFileSystemDirectory, um TeX-Quelldateien und Ressourcen direkt aus Ordnern auf dem Datenträger zu lesen.
  • Eingabearbeitsverzeichnis ZIP-Archiv verwendet InputZipDirectory, um eine gekapselte TeX-Kompilierung zu lesen, bei der alle Abhängigkeiten (.tex, .sty, Bilder) in einer einzigen .zip-Datei gespeichert sind.
  • Eingabearbeitsverzeichnis Benutzerdefinierter Stream/Speicher verwendet IInputWorkingDirector, um virtualisierte Dateisysteme, Datenbank-BLOB-Eingaben oder Cloud-Speicher-Streams (S3/Azure Blob) zu lesen."

TeX-Eingabe aus einem lokalen Dateisystemverzeichnis laden

Geben Sie mit InputFileSystemDirectory einen physischen Ordner auf dem Datenträger als Eingabearbeitsverzeichnis für die TeX-Engine an.

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

TeX-Eingabe aus einem ZIP-Archiv laden

Kompilieren Sie eigenständige TeX-Pakete direkt aus einer .zip-Datei, ohne sie mit InputZipDirectory auf den Datenträger zu entpacken.

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

TeX-Quelle über einen Speicherstream übergeben

Für die dynamische LaTeX-Generierung (z. B. serverseitig gerenderte Berichte oder die dynamische Darstellung von Gleichungen) können Sie rohe Zeichenfolgeninhalte oder Streams direkt an TeXJob übergeben.

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

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. Benötige ich MiKTeX, TeX Live oder externe ausführbare Binärdateien?

Nein. Aspose.TeX for Java ist eine vollständig eigenständige Java-Engine, die die TeX/LaTeX-Analyse, den Satz und das Rendering nativ ausführt, ohne dass externe native ausführbare Dateien erforderlich sind.

2. Kann ich verschiedene Eingabequellen für Hauptdateien und externe Grafiken/Styles kombinieren?

Ja. Sie können ein primäres InputWorkingDirectory (z. B. InputZipDirectory) festlegen und zusätzliche Suchpfade für Pakete und Schriftarten mithilfe der Konfigurationseinstellungen von TeXOptions einrichten.

3. Wie verarbeitet Aspose.TeX relative Pfade in den Makros \input{} oder \includegraphics{}?

Relative Pfade, die in LaTeX-Dokumenten definiert sind, werden automatisch relativ zum Stammverzeichnis aufgelöst, das von der aktiven Instanz von IInputWorkingDirectory angegeben wird.