Input TeX dan direktori kerja yang fleksibel di Java

Konfigurasikan sumber input dan direktori kerja sistem file virtual untuk kompilasi dokumen TeX dan LaTeX menggunakan Aspose.TeX for Java. Teruskan file sumber TeX, paket, makro, dan gambar yang disematkan langsung dari sistem file lokal, arsip ZIP terkompresi, atau stream kustom dalam memori tanpa memerlukan instalasi distribusi TeX desktop (seperti MiKTeX atau TeX Live).

 

Saat mengompilasi dokumen TeX atau LaTeX, engine memerlukan akses ke file sumber utama (.tex), subfile yang direferensikan (\input{} atau \include), style (.sty), class (.cls), font, dan gambar.

Aspose.TeX for Java memisahkan sumber input TeX ke dalam direktori kerja abstrak yang direpresentasikan oleh antarmuka IInputWorkingDirectory:

  • Direktori kerja input sistem file lokal menggunakan InputFileSystemDirectory untuk membaca file sumber TeX dan aset secara langsung dari folder pada disk.
  • Direktori kerja input arsip ZIP menggunakan InputZipDirectory untuk membaca kompilasi TeX yang terenkapsulasi, tempat semua dependensi (.tex, .sty, gambar) disimpan dalam satu file .zip.
  • Direktori kerja input stream/memori kustom menggunakan IInputWorkingDirector untuk membaca sistem file virtual, input BLOB database, atau stream penyimpanan cloud (S3/Azure Blob)."

Memuat input TeX dari direktori sistem file lokal

Tentukan folder fisik pada disk sebagai direktori kerja input untuk engine TeX menggunakan 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.");
    }
}

Memuat input TeX dari arsip ZIP

Kompilasi paket TeX mandiri langsung dari file .zip tanpa mengekstraknya ke disk menggunakan 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.");
    }
}

Meneruskan sumber TeX melalui stream memori

Untuk pembuatan LaTeX secara dinamis (seperti laporan yang dirender di server atau rendering persamaan secara dinamis), teruskan konten string mentah atau stream langsung ke 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.");
    }
}

Instalasi dan Penyiapan

Integrasikan Aspose.TeX for Java ke dalam proyek Anda menggunakan 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>

Pertanyaan yang Sering Diajukan

1. Apakah saya perlu menginstal MiKTeX, TeX Live, atau file biner yang dapat dieksekusi dari luar?

Tidak. Aspose.TeX for Java adalah mesin Java yang sepenuhnya mandiri yang menjalankan penguraian, penyusunan huruf, dan rendering TeX/LaTeX secara native tanpa memerlukan file executable native eksternal.

2. Bisakah saya menggabungkan sumber input yang berbeda untuk file utama dan grafik/gaya eksternal?

Ya. Anda dapat menetapkan InputWorkingDirectory utama (misalnya, InputZipDirectory) dan mengonfigurasi jalur pencarian tambahan untuk paket dan font menggunakan pengaturan konfigurasi TeXOptions.

3. Bagaimana Aspose.TeX menangani jalur relatif dalam makro \input{} atau \includegraphics{}?

Jalur relatif yang ditentukan dalam dokumen LaTeX secara otomatis diselesaikan relatif terhadap root yang ditentukan oleh instance IInputWorkingDirectory yang aktif.