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 InputFileSystemDirectory per leggere i file sorgente TeX e le risorse direttamente dalle cartelle presenti sul disco.
  • La directory di lavoro degli input archivio ZIP utilizza InputZipDirectory per 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 IInputWorkingDirector per 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.