Input TeX e directory di lavoro flessibili in Java
Configura le origini di input e le directory di lavoro del file system virtuale per la compilazione di documenti TeX e LaTeX utilizzando Aspose.TeX for Java. Passa file sorgente TeX, pacchetti, macro e immagini incorporate direttamente da file system locali, archivi ZIP compressi o stream personalizzati in memoria, senza richiedere l’installazione di distribuzioni TeX desktop (come MiKTeX o TeX Live).
Durante la compilazione di documenti TeX o LaTeX, il motore deve accedere ai file sorgente principali (.tex), ai sottofile referenziati (\input{} o \include), agli stili (.sty), alle classi (.cls), ai caratteri e alle immagini.
Aspose.TeX for Java separa le origini degli input TeX in directory di lavoro astratte rappresentate dall’interfaccia IInputWorkingDirectory:
- La directory di lavoro degli input file system locale utilizza
InputFileSystemDirectoryper leggere i file sorgente TeX e le risorse direttamente dalle cartelle presenti sul disco. - La directory di lavoro degli input archivio ZIP utilizza
InputZipDirectoryper leggere una compilazione TeX incapsulata in cui tutte le dipendenze (.tex,.sty, immagini) sono archiviate in un singolo file .zip. - La directory di lavoro degli input stream/memoria personalizzati utilizza
IInputWorkingDirectorper leggere file system virtualizzati, input BLOB di database o stream di archiviazione cloud (S3/Azure Blob)."
Caricare l'input TeX da una directory del file system locale
Specifica una cartella fisica sul disco come directory di lavoro degli input per il motore TeX utilizzando InputFileSystemDirectory.
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.");
}
}Caricare l'input TeX da un archivio ZIP
Compila pacchetti TeX autonomi direttamente da un file .zip senza estrarli sul disco utilizzando InputZipDirectory.
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.");
}
}Passare il sorgente TeX tramite uno stream di memoria
Per la generazione dinamica di LaTeX (come i report sottoposti a rendering sul server o il rendering dinamico delle equazioni), passa contenuto di stringhe non elaborato o stream direttamente a TeXJob.
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.");
}
}Installazione e configurazione
Integra Aspose.TeX for Java nel tuo progetto utilizzando Maven:
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>
FAQ
1. È necessario installare MiKTeX, TeX Live o file binari eseguibili esterni?
No. Aspose.TeX for Java è un motore Java completamente autonomo che esegue nativamente l’analisi, la composizione tipografica e il rendering di TeX/LaTeX senza richiedere eseguibili nativi esterni.
2. È possibile combinare diverse origini di input per i file principali e per la grafica/gli stili esterni?
Sì. È possibile impostare una InputWorkingDirectory primaria (ad esempio, InputZipDirectory) e configurare percorsi di ricerca ausiliari per pacchetti/font utilizzando le impostazioni di configurazione di TeXOptions.
3. Come gestisce Aspose.TeX i percorsi relativi nelle macro \input{} o \includegraphics{}?
I percorsi relativi definiti nei documenti LaTeX vengono automaticamente risolti in relazione alla radice specificata dall’istanza IInputWorkingDirectory attiva.