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 inIInputWorkingDirectorybefindet, verwenden Sie eine benannte Datei als Eingabe und die neueTeXJob(‘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
InputStreamals Eingabequelle und die neueTeXJob(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.