Output TeX yang fleksibel dan direktori kerja output di Java

Konfigurasikan target output dan mekanisme penyimpanan untuk kompilasi dokumen TeX dan LaTeX menggunakan Aspose.Font untuk Java. Simpan dokumen yang dirender (PDF, XPS, SVG, PNG, JPEG, TIFF, BMP) dan artefak kompilasi tambahan (.log, .aux) langsung ke folder disk fisik, arsip ZIP terkompresi, atau stream kustom dalam memori tanpa memerlukan instalasi TeX desktop.

 

Selama kompilasi, mesin typesetting TeX menghasilkan dua kategori output utama:

  • File output utama: Dokumen target (misalnya, .pdf, .xps, atau rangkaian gambar).
  • File output tambahan: Log (.log), data tambahan (.aux), dan file perantara yang dihasilkan oleh makro LaTeX.

Aspose.TeX untuk Java mengenkapsulasi tujuan output ke dalam direktori kerja abstrak melalui antarmuka IOutputWorkingDirectory, yang memungkinkan pengembang mengarahkan stream output secara dinamis. Jenis direktori output yang didukung:

  • Direktori kerja output Sistem file lokal menggunakan OutputFileSystemDirectory untuk menyimpan dokumen yang dirender dan file log langsung ke folder disk lokal.
  • Direktori kerja output Arsip ZIP menggunakan OutputZipDirectory untuk mengemas dokumen output, log, dan aset yang dihasilkan ke dalam satu file .zip.
  • Direktori kerja output Stream/memori kustom menggunakan IOutputWorkingDirectory untuk menangkap output secara langsung di memori, BLOB database, atau stream cloud (S3/Azure Blob).

Simpan output TeX ke direktori sistem file lokal

Arahkan output dokumen utama dan log kompilasi tambahan ke folder fisik menggunakan 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);
    }
}

Simpan output TeX langsung ke arsip ZIP

Kemas dokumen yang dirender bersama log perantara dan gambar yang dihasilkan ke dalam file ZIP terkompresi menggunakan 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.");
    }
}

Alirkan output TeX ke memori/ByteArray

Untuk aplikasi cloud atau web, tangkap dokumen yang dirender secara langsung sebagai stream byte tanpa menulis file ke penyimpanan disk lokal.

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.");
    }
}

Instalasi dan Penyiapan

Integrasikan Aspose.TeX untuk 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. Perangkat target output apa saja yang didukung dalam Aspose.TeX for Java?

Aspose.TeX mendukung beberapa perangkat output, termasuk PdfDevice (dokumen PDF), XpsDevice (dokumen XPS), SvgDevice (grafik vektor yang dapat diskalakan), dan ImageDevice (gambar raster seperti PNG, JPEG, TIFF, dan BMP).

2. Di mana file kompilasi tambahan (.log, .aux) disimpan?

File tambahan ditulis ke direktori yang ditentukan dalam TeXOptions.setOutputWorkingDirectory(). Jika Anda menggunakan OutputZipDirectory, file .log dan .aux akan dikemas langsung ke dalam arsip ZIP bersama dokumen yang telah dirender.

3. Bisakah saya menekan atau mengalihkan file output log?

Ya. Anda dapat menyesuaikan penanganan output terminal/log melalui TeXOptions.setTerminalOut() atau menetapkan implementasi IOutputWorkingDirectory khusus untuk membuang atau mengalihkan log kompilasi.