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>
Häufig gestellte Fragen
1. Muss ich beim Konvertieren von LaTeX-Zeichenfolgen in PDF temporäre Dateien auf dem Datenträger erstellen?
Nein. Sie können den Zeichenfolgeninhalt mit StringReader oder ByteArrayInputStream direkt an TeXJob übergeben und die Ausgabe an ByteArrayOutputStream streamen. Dadurch ist eine 100%ige Verarbeitung im Arbeitsspeicher möglich, ohne auf den Datenträger zuzugreifen.
2. Wie werden relative Dateireferenzen innerhalb einer streambasierten TeX-Quelle aufgelöst?
Wenn die Haupteingabe als Stream oder Zeichenfolge übergeben wird, werden relative Pfade innerhalb von \input{}, \include{} oder \includegraphics{} relativ zu dem über options.setInputWorkingDirectory() konfigurierten Verzeichnis aufgelöst.
3. Was passiert mit der Ausgabebenennung, wenn die Eingabe als Stream bereitgestellt wird?
Wenn die Haupteingabe ein Stream ist, verwendet Aspose.TeX den standardmäßigen Auftragsnamen (oder den explizit konfigurierten Auftragsnamen using options.setJobName(‘custom_name’)) zur Benennung der ausgegebenen PDF/XPS-Dateien und der Hilfsprotokolldateien.