Entrées TeX et répertoires de travail flexibles en Java

Configurez les sources d’entrée et les répertoires de travail du système de fichiers virtuel pour compiler des documents TeX et LaTeX avec Aspose.TeX for Java. Transmettez les fichiers sources TeX, les packages, les macros et les images intégrées directement depuis des systèmes de fichiers locaux, des archives ZIP compressées ou des flux personnalisés en mémoire, sans nécessiter l’installation de distributions TeX de bureau (telles que MiKTeX ou TeX Live).

 

Lors de la compilation de documents TeX ou LaTeX, le moteur doit accéder aux fichiers sources principaux (.tex), aux sous-fichiers référencés (\input{} ou \include), aux styles (.sty), aux classes (.cls), aux polices et aux images.

Aspose.TeX for Java sépare les sources d’entrée TeX en répertoires de travail abstraits représentés par l’interface IInputWorkingDirectory:

  • Le répertoire de travail d’entrée système de fichiers local utilise InputFileSystemDirectory pour lire les fichiers sources TeX et les ressources directement depuis les dossiers du disque.
  • Le répertoire de travail d’entrée archive ZIP utilise InputZipDirectory pour lire une compilation TeX encapsulée dans laquelle toutes les dépendances (.tex, .sty, images) sont stockées dans un seul fichier .zip.
  • Le répertoire de travail d’entrée flux/mémoire personnalisé utilise IInputWorkingDirector pour lire des systèmes de fichiers virtualisés, des entrées BLOB de bases de données ou des flux de stockage cloud (S3/Azure Blob)."

Charger une entrée TeX depuis un répertoire du système de fichiers local

Spécifiez un dossier physique sur le disque comme répertoire de travail d’entrée pour le moteur TeX à l’aide de 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.");
    }
}

Charger une entrée TeX depuis une archive ZIP

Compilez des packages TeX autonomes directement depuis un fichier .zip sans les décompresser sur le disque à l’aide de 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.");
    }
}

Transmettre une source TeX via un flux mémoire

Pour la génération dynamique de LaTeX (tels que les rapports générés côté serveur ou le rendu dynamique d’équations), transmettez le contenu d’une chaîne brute ou des flux directement à 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.");
    }
}

Installation et configuration

Intégrez Aspose.TeX for Java à votre projet à l’aide de 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>

Questions fréquentes

1. Ai-je besoin d’installer MiKTeX, TeX Live ou des fichiers binaires exécutables externes ?

Non. Aspose.TeX for Java est un moteur Java entièrement autonome qui exécute nativement l’analyse, la composition typographique et le rendu TeX/LaTeX, sans nécessiter de fichiers exécutables natifs externes.

2. Puis-je combiner différentes sources d’entrée pour les fichiers principaux et les graphiques/styles externes ?

Oui. Vous pouvez définir un InputWorkingDirectory principal (par exemple, InputZipDirectory) et configurer des chemins de recherche auxiliaires pour les packages et les polices à l’aide des paramètres de configuration de TeXOptions.

3. Comment Aspose.TeX gère-t-il les chemins relatifs dans les macros \input{} ou \includegraphics{} ?

Les chemins relatifs définis dans les documents LaTeX sont automatiquement résolus par rapport à la racine spécifiée par l’instance active de IInputWorkingDirectory.