Sorties TeX flexibles et répertoires de travail de sortie en Java

Configurez les cibles de sortie et les mécanismes de stockage pour la compilation de documents TeX et LaTeX à l’aide d’Aspose.Font pour Java. Enregistrez les documents rendus (PDF, XPS, SVG, PNG, JPEG, TIFF, BMP) et les artefacts de compilation auxiliaires (.log, .aux) directement dans des dossiers physiques sur disque, des archives ZIP compressées ou des flux personnalisés en mémoire, sans nécessiter d’installations TeX de bureau.

 

Lors de la compilation, le moteur de composition TeX produit deux grandes catégories de sorties :

  • Fichiers de sortie principaux : Le document cible (par exemple, .pdf, .xps ou des séquences d’images).
  • Fichiers de sortie auxiliaires : Journaux (.log), données auxiliaires (.aux) et fichiers intermédiaires générés par les macros LaTeX.

Aspose.TeX pour Java encapsule les destinations de sortie dans des répertoires de travail abstraits via l’interface IOutputWorkingDirectory, permettant aux développeurs de diriger dynamiquement les flux de sortie. Types de répertoires de sortie pris en charge :

  • Le répertoire de travail de sortie Système de fichiers local utilise OutputFileSystemDirectory pour enregistrer les documents rendus et les fichiers journaux directement dans des dossiers du disque local.
  • Le répertoire de travail de sortie Archive ZIP utilise OutputZipDirectory pour regrouper les documents de sortie, les journaux et les ressources générées dans un seul fichier .zip.
  • Le répertoire de travail de sortie Flux/mémoire personnalisés utilise IOutputWorkingDirectory pour capturer les sorties directement en mémoire, dans des BLOB de base de données ou dans des flux cloud (S3/Azure Blob).

Enregistrer la sortie TeX dans un répertoire du système de fichiers local

Dirigez les sorties du document principal et les journaux de compilation auxiliaires vers un dossier physique à l’aide de OutputFileSystemDirectory.

import com.aspose.tex.*;
import java.io.IOException;

public class TeXOutputToFileSystem {
    public static void main(String[] args) throws IOException {
        // Initialize options for LaTeX format using ObjectTeX
        TeXOptions options = TeXOptions.consoleAppOptions(TeXConfig.objectLaTeX());

        // Set input working directory
        options.setInputWorkingDirectory(new InputFileSystemDirectory("C:/TeXProject/Input/"));

        // Set output working directory for compiled documents and logs
        String outputDirPath = "C:/TeXProject/Output/";
        options.setOutputWorkingDirectory(new OutputFileSystemDirectory(outputDirPath));

        // Execute TeX job producing PDF output
        TeXJob job = new TeXJob("main", new PdfDevice(), options);
        job.run();

        System.out.println("TeX compilation complete. Outputs saved to: " + outputDirPath);
    }
}

Enregistrer directement la sortie TeX dans une archive ZIP

Regroupez les documents rendus ainsi que les journaux intermédiaires et les images générées dans un fichier ZIP compressé à l’aide de OutputZipDirectory.

import com.aspose.tex.*;
import java.io.FileOutputStream;
import java.io.IOException;

public class TeXOutputToZipArchive {
    public static void main(String[] args) throws IOException {
        // Initialize LaTeX conversion options
        TeXOptions options = TeXOptions.consoleAppOptions(TeXConfig.objectLaTeX());
        options.setInputWorkingDirectory(new InputFileSystemDirectory("C:/TeXProject/Input/"));

        // Create output stream for destination ZIP file
        FileOutputStream zipStream = new FileOutputStream("C:/TeXProject/OutputBundle.zip");

        // Set output working directory to ZIP stream
        options.setOutputWorkingDirectory(new OutputZipDirectory(zipStream));

        // Run job targeting PDF rendering
        TeXJob job = new TeXJob("main", new PdfDevice(), options);
        job.run();

        zipStream.close();
        System.out.println("TeX outputs and logs successfully bundled into OutputBundle.zip.");
    }
}

Diffuser la sortie TeX vers la mémoire/ByteArray

Pour les applications cloud ou web, capturez les documents rendus directement sous forme de flux d’octets sans écrire de fichiers sur le stockage du disque local.

import com.aspose.tex.*;
import java.io.ByteArrayOutputStream;

public class TeXOutputToMemoryStream {
    public static void main(String[] args) throws Exception {
        // Configure conversion options
        TeXOptions options = TeXOptions.consoleAppOptions(TeXConfig.objectLaTeX());
        options.setInputWorkingDirectory(new InputFileSystemDirectory("C:/TeXProject/Input/"));

        // Initialize memory output stream device
        ByteArrayOutputStream outputStream = new ByteArrayOutputStream();
        
        // Configure output working directory for log/auxiliary files
        options.setOutputWorkingDirectory(new OutputFileSystemDirectory("C:/TeXProject/Logs/"));

        // Run compilation directing PDF output to byte array stream
        TeXJob job = new TeXJob("main", new PdfDevice(outputStream), options);
        job.run();

        byte[] pdfBytes = outputStream.toByteArray();
        System.out.println("Generated PDF size in memory: " + pdfBytes.length + " bytes.");
    }
}

Installation et configuration

Intégrez Aspose.TeX pour 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. Quels périphériques de sortie cibles sont pris en charge dans Aspose.TeX for Java ?

Aspose.TeX prend en charge plusieurs périphériques de sortie, notamment PdfDevice (documents PDF), XpsDevice (documents XPS), SvgDevice (graphiques vectoriels évolutifs) et ImageDevice (images matricielles telles que PNG, JPEG, TIFF et BMP).

2. Où sont enregistrés les fichiers auxiliaires de compilation (.log, .aux) ?

Les fichiers auxiliaires sont écrits dans le répertoire spécifié dans TeXOptions.setOutputWorkingDirectory(). Si vous utilisez OutputZipDirectory, les fichiers .log et .aux seront directement intégrés à l’archive ZIP avec le document rendu.

3. Puis-je supprimer ou rediriger les fichiers de sortie des journaux ?

Oui. Vous pouvez personnaliser la gestion de la sortie du terminal/des journaux via TeXOptions.setTerminalOut() ou affecter une implémentation personnalisée de IOutputWorkingDirectory afin d’ignorer ou de rediriger les journaux de compilation.