Alternative Möglichkeiten zur Angabe der TeX-Haupteingabe in Java

Entdecken Sie flexible Möglichkeiten, TeX- und LaTeX-Quellinhalte als Haupteingabe in die Satz-Engine mit Aspose.TeX for Java einzuspeisen. Neben dem Laden statischer .tex-Dateien aus einem Dateisystem oder ZIP-Archiv können Entwickler rohe TeX-String-Variablen, Speicherstreams, Byte-Arrays oder benutzerdefinierte Reader direkt an TeXJob übergeben, um Dokumente in Echtzeit zu kompilieren und serverseitig gerenderte Berichte zu erstellen.

 

Wählen Sie je nach Ihrer Anwendungsarchitektur (z. B. REST-API, datenbankgestütztes Publishing oder Cloud-Microservice) die Haupteingabemethode, die am besten zu Ihrem Workflow passt:

  • Für standardmäßige dateibasierte Projekte, bei denen sich die zentrale .tex-Datei in IInputWorkingDirectory befindet, verwenden Sie eine benannte Datei als Eingabe und die neue TeXJob(‘main’, device, options)-Konstruktion.
  • Für die dynamische Dokumentgenerierung aus Template-Engines verwenden Sie einen String als Eingabequelle und die neue TeXJob(new StringReader(latexCode), device, options)-Konstruktion.
  • Für die direkte Stream-Eingabe aus Netzwerkanfragen, Datenbank-BLOBs oder Cloud-Speicher (S3/GCS) verwenden Sie einen InputStream als Eingabequelle und die neue TeXJob(inputStream, device, options)-Konstruktion.
  • Für die hochperformante Verarbeitung im Speicher ohne durch Festplatten-I/O verursachte Engpässe verwenden Sie einen Speicherpuffer als Eingabequelle und die neue neue TeXJob(new ByteArrayInputStream(bytes), device, options)-Konstruktion.

TeX-Quelltext als Java-String-Variable übergeben

Erstellen Sie TeX-Dokumente direkt aus rohen Strings oder dynamischen String-Vorlagen, ohne temporäre .tex-Dateien auf der Festplatte zu speichern.

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

public class TeXInputFromString {
    public static void main(String[] args) throws Exception {
        // Create a dynamic LaTeX string
        String latexContent = "\\documentclass{article}\n" +
                             "\\begin{document}\n" +
                             "\\title{Dynamic Invoice}\n" +
                             "\\author{Automated System}\n" +
                             "\\maketitle\n" +
                             "\\section{Summary}\n" +
                             "This document was compiled directly from a Java String variable.\n" +
                             "\\end{document}";

        // Initialize LaTeX conversion options
        TeXOptions options = TeXOptions.consoleAppOptions(TeXConfig.objectLaTeX());
        options.setOutputWorkingDirectory(new OutputFileSystemDirectory("C:/TeXProject/Output/"));

        // Run TeX job passing StringReader as the main input
        TeXJob job = new TeXJob(new StringReader(latexContent), new PdfDevice(), options);
        job.run();

        System.out.println("Document compiled successfully from String input.");
    }
}

TeX-Quelle aus einem InputStream übergeben

Lesen Sie TeX-Quellcode direkt aus Eingabestreams, die von HTTP-Anfragen, Datenbankfeldern oder Ressourcenpaketen bereitgestellt werden.

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

public class TeXInputFromInputStream {
    public static void main(String[] args) throws Exception {
        // Open an input stream from a remote or custom source
        InputStream texStream = new FileInputStream("C:/TeXProject/Templates/report.tex");

        // Initialize options
        TeXOptions options = TeXOptions.consoleAppOptions(TeXConfig.objectLaTeX());
        options.setOutputWorkingDirectory(new OutputFileSystemDirectory("C:/TeXProject/Output/"));

        // Execute TeX job directly with InputStream
        TeXJob job = new TeXJob(texStream, new PdfDevice(), options);
        job.run();

        texStream.close();
        System.out.println("TeX compilation from InputStream finished.");
    }
}

Stream-Eingabe mit Assets aus einem lokalen Arbeitsverzeichnis kombinieren

Beim Übergeben des TeX-Hauptinhalts über einen Stream oder String können sekundäre Assets (z. B. externe Bilder \includegraphics{} oder Stilpakete \usepackage{}) weiterhin aus einem IInputWorkingDirectory aufgelöst werden.

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

public class TeXStreamWithAssetDirectory {
    public static void main(String[] args) throws Exception {
        // LaTeX string referencing an external image asset 'logo.png'
        String latexCode = "\\documentclass{article}\n" +
                           "\\usepackage{graphicx}\n" +
                           "\\begin{document}\n" +
                           "\\includegraphics{logo.png}\n" +
                           "\\end{document}";

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

        // Configure options and set directory for resolving assets (logo.png)
        TeXOptions options = TeXOptions.consoleAppOptions(TeXConfig.objectLaTeX());
        options.setInputWorkingDirectory(new InputFileSystemDirectory("C:/TeXProject/Assets/"));
        options.setOutputWorkingDirectory(new OutputFileSystemDirectory("C:/TeXProject/Output/"));

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

        System.out.println("Dynamic stream compiled with external assets resolved successfully.");
    }
}

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>

Gyakran ismételt kérdések

1. Szükségem van ideiglenes lemezfájlok létrehozására, amikor LaTeX-karakterláncokat PDF-fájlokká alakítok?

Nem. A karakterlánc tartalmát StringReader vagy ByteArrayInputStream segítségével közvetlenül átadhatja a TeXJob számára, a kimenetet pedig ByteArrayOutputStream segítségével továbbíthatja. Ez 100%-ban memóriában történő feldolgozást tesz lehetővé a lemez használata nélkül.

2. Hogyan oldhatók fel a relatív fájlhivatkozások egy streamalapú TeX-forrásban?

Ha a fő bemenet streamként vagy karakterláncként van átadva, a \input{}, \include{} vagy \includegraphics{} elemekben szereplő relatív elérési utak az options.setInputWorkingDirectory() segítségével konfigurált könyvtárhoz képest kerülnek feloldásra.

3. Mi történik a kimeneti fájlok elnevezésével, ha a bemenet streamként van megadva?

Ha a fő bemenet stream, az Aspose.TeX az alapértelmezett feladatnevet (vagy az explicit módon konfigurált feladatnevet, using options.setJobName(‘custom_name’)) használja a kimeneti PDF/XPS-fájlok és a kiegészítő naplófájlok elnevezéséhez.