Entradas de TeX y directorios de trabajo flexibles en Java
Configure fuentes de entrada y directorios de trabajo del sistema de archivos virtual para compilar documentos TeX y LaTeX mediante Aspose.TeX for Java. Pase archivos TeX de origen, paquetes, macros e imágenes incrustadas directamente desde sistemas de archivos locales, archivos ZIP comprimidos o flujos personalizados en memoria, sin necesidad de instalar distribuciones de TeX de escritorio (como MiKTeX o TeX Live).
Al compilar documentos TeX o LaTeX, el motor necesita acceso a los archivos de origen principales (.tex), los subarchivos referenciados (\input{} o \include), los estilos (.sty), las clases (.cls), las fuentes y las imágenes.
Aspose.TeX for Java separa las fuentes de entrada de TeX en directorios de trabajo abstraídos representados por la interfaz IInputWorkingDirectory:
- El directorio de trabajo de entrada sistema de archivos local utiliza
InputFileSystemDirectorypara leer archivos de origen TeX y recursos directamente desde carpetas del disco. - El directorio de trabajo de entrada archivo ZIP utiliza
InputZipDirectorypara leer una compilación TeX encapsulada en la que todas las dependencias (.tex,.sty, imágenes) se almacenan en un único archivo .zip. - El directorio de trabajo de entrada flujo/memoria personalizado utiliza
IInputWorkingDirectorpara leer sistemas de archivos virtualizados, entradas BLOB de bases de datos o flujos de almacenamiento en la nube (S3/Azure Blob)."
Cargar una entrada de TeX desde un directorio del sistema de archivos local
Especifique una carpeta física del disco como directorio de trabajo de entrada para el motor TeX mediante 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.");
}
}Cargar una entrada de TeX desde un archivo ZIP
Compile paquetes TeX independientes directamente desde un archivo .zip sin descomprimirlos en el disco mediante 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.");
}
}Pasar el código fuente TeX mediante un flujo de memoria
Para la generación dinámica de LaTeX (como informes renderizados en el servidor o renderizado dinámico de ecuaciones), pase contenido de cadenas sin procesar o flujos directamente 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.");
}
}Instalación y configuración
Integre Aspose.TeX for Java en su proyecto mediante 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>
Preguntas frecuentes
1. ¿Necesito tener instalados MiKTeX, TeX Live o archivos binarios ejecutables externos?
No. Aspose.TeX for Java es un motor Java completamente independiente que ejecuta de forma nativa el análisis, la composición tipográfica y el procesamiento de TeX/LaTeX sin requerir ejecutables nativos externos.
2. ¿Puedo combinar diferentes fuentes de entrada para los archivos principales y los gráficos/estilos externos?
Sí. Puede establecer un InputWorkingDirectory principal (por ejemplo, InputZipDirectory) y configurar rutas de búsqueda auxiliares para paquetes y fuentes mediante los ajustes de configuración de TeXOptions.
3. ¿Cómo maneja Aspose.TeX las rutas relativas en las macros \input{} o \includegraphics{}?
Las rutas relativas definidas dentro de los documentos LaTeX se resuelven automáticamente con respecto a la raíz especificada por la instancia activa de IInputWorkingDirectory.