Đầu ra TeX linh hoạt và thư mục làm việc đầu ra trong Java

Cấu hình các đích đầu ra và cơ chế lưu trữ cho việc biên dịch tài liệu TeX và LaTeX bằng Aspose.Font for Java. Lưu các tài liệu đã kết xuất (PDF, XPS, SVG, PNG, JPEG, TIFF, BMP) và các tạo phẩm biên dịch phụ trợ (.log, .aux) trực tiếp vào các thư mục trên ổ đĩa vật lý, kho lưu trữ ZIP nén hoặc các luồng tùy chỉnh trong bộ nhớ mà không yêu cầu cài đặt TeX trên máy tính.

 

Trong quá trình biên dịch, công cụ sắp chữ TeX tạo ra hai danh mục đầu ra chính:

  • Tệp đầu ra chính: Tài liệu đích (ví dụ: .pdf, .xps hoặc các chuỗi hình ảnh).
  • Tệp đầu ra phụ trợ: Nhật ký (.log), dữ liệu phụ trợ (.aux) và các tệp trung gian được tạo bởi macro LaTeX.

Aspose.TeX for Java đóng gói các đích đầu ra thành các thư mục làm việc trừu tượng thông qua giao diện IOutputWorkingDirectory, cho phép các nhà phát triển định hướng các luồng đầu ra một cách linh hoạt. Các loại thư mục đầu ra được hỗ trợ:

  • Thư mục làm việc đầu ra Hệ thống tệp cục bộ sử dụng OutputFileSystemDirectory để lưu các tài liệu đã kết xuất và tệp nhật ký trực tiếp vào các thư mục trên ổ đĩa cục bộ.
  • Thư mục làm việc đầu ra Kho lưu trữ ZIP sử dụng OutputZipDirectory để đóng gói tài liệu đầu ra, nhật ký và tài sản được tạo vào một tệp .zip duy nhất.
  • Thư mục làm việc đầu ra Luồng/bộ nhớ tùy chỉnh sử dụng IOutputWorkingDirectory để thu thập đầu ra trực tiếp vào bộ nhớ, BLOB cơ sở dữ liệu hoặc các luồng đám mây (S3/Azure Blob).

Lưu đầu ra TeX vào thư mục hệ thống tệp cục bộ

Định hướng đầu ra tài liệu chính và nhật ký biên dịch phụ trợ đến một thư mục vật lý bằng 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);
    }
}

Lưu trực tiếp đầu ra TeX vào kho lưu trữ ZIP

Đóng gói các tài liệu đã kết xuất cùng với nhật ký trung gian và hình ảnh được tạo vào một tệp ZIP nén bằng 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.");
    }
}

Truyền đầu ra TeX vào bộ nhớ/ByteArray

Đối với các ứng dụng đám mây hoặc web, thu thập các tài liệu đã kết xuất trực tiếp dưới dạng luồng byte mà không ghi tệp vào bộ nhớ đĩa cục bộ.

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

Cài đặt và thiết lập

Tích hợp Aspose.TeX for Java vào dự án của bạn bằng 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. Những thiết bị đầu ra đích nào được hỗ trợ trong Aspose.TeX for Java?

Aspose.TeX hỗ trợ nhiều thiết bị đầu ra, bao gồm PdfDevice (tài liệu PDF), XpsDevice (tài liệu XPS), SvgDevice (đồ họa vector có thể mở rộng) và ImageDevice (hình ảnh raster như PNG, JPEG, TIFF và BMP).

2. Các tệp biên dịch phụ trợ (.log, .aux) được lưu ở đâu?

Các tệp phụ trợ được ghi vào thư mục được chỉ định trong TeXOptions.setOutputWorkingDirectory(). Nếu bạn sử dụng OutputZipDirectory, các tệp .log.aux sẽ được đóng gói trực tiếp bên trong kho lưu trữ ZIP cùng với tài liệu đã kết xuất.

3. Có thể loại bỏ hoặc chuyển hướng các tệp nhật ký đầu ra không?

Có. Bạn có thể tùy chỉnh việc xử lý đầu ra của terminal/nhật ký thông qua TeXOptions.setTerminalOut() hoặc gán một triển khai IOutputWorkingDirectory tùy chỉnh để loại bỏ hoặc chuyển hướng nhật ký biên dịch.