Đầu vào TeX linh hoạt và thư mục làm việc trong Java
Cấu hình các nguồn đầu vào và thư mục làm việc của hệ thống tệp ảo để biên dịch tài liệu TeX và LaTeX bằng Aspose.TeX cho Java. Truyền trực tiếp các tệp TeX nguồn, gói, macro và hình ảnh nhúng từ hệ thống tệp cục bộ, 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 các bản phân phối TeX trên máy tính để bàn (như MiKTeX hoặc TeX Live).
Khi biên dịch tài liệu TeX hoặc LaTeX, công cụ cần quyền truy cập vào các tệp nguồn chính (.tex), các tệp con được tham chiếu (\input{} hoặc \include), kiểu (.sty), lớp (.cls), phông chữ và hình ảnh.
Aspose.TeX cho Java phân tách các nguồn đầu vào TeX thành các thư mục làm việc trừu tượng được biểu diễn bởi giao diện IInputWorkingDirectory:
- Thư mục làm việc đầu vào hệ thống tệp cục bộ sử dụng
InputFileSystemDirectoryđể đọc trực tiếp các tệp nguồn TeX và tài nguyên từ các thư mục trên ổ đĩa. - Thư mục làm việc đầu vào kho lưu trữ ZIP sử dụng
InputZipDirectoryđể đọc quá trình biên dịch TeX được đóng gói, trong đó tất cả các phần phụ thuộc (.tex,.sty, hình ảnh) được lưu trữ trong một tệp .zip duy nhất. - Thư mục làm việc đầu vào luồng tùy chỉnh/bộ nhớ sử dụng
IInputWorkingDirectorđể đọc các hệ thống tệp ảo hóa, đầu vào BLOB từ cơ sở dữ liệu hoặc các luồng lưu trữ đám mây (S3/Azure Blob)."
Tải đầu vào TeX từ thư mục hệ thống tệp cục bộ
Chỉ định một thư mục vật lý trên ổ đĩa làm thư mục làm việc đầu vào cho công cụ TeX bằng 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.");
}
}Tải đầu vào TeX từ kho lưu trữ ZIP
Biên dịch các gói TeX độc lập trực tiếp từ tệp .zip mà không cần giải nén chúng vào ổ đĩa bằng 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.");
}
}Truyền mã nguồn TeX qua luồng bộ nhớ
Để tạo LaTeX động (chẳng hạn như báo cáo được kết xuất trên máy chủ hoặc kết xuất phương trình động), hãy truyền trực tiếp nội dung chuỗi thô hoặc các luồng tới 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.");
}
}Cài đặt và thiết lập
Tích hợp Aspose.TeX cho 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. Tôi có cần cài đặt MiKTeX, TeX Live hoặc các tệp nhị phân thực thi bên ngoài không?
Không. Aspose.TeX for Java là một công cụ Java hoàn toàn độc lập, thực hiện phân tích cú pháp TeX/LaTeX, dàn trang và kết xuất một cách nguyên bản mà không yêu cầu các tệp thực thi gốc bên ngoài.
2. Tôi có thể kết hợp các nguồn đầu vào khác nhau cho tệp chính và đồ họa/kiểu bên ngoài không?
Có. Bạn có thể đặt InputWorkingDirectory chính (ví dụ: InputZipDirectory) và cấu hình các đường dẫn tìm kiếm gói phông chữ phụ trợ bằng các thiết lập cấu hình TeXOptions.
3. Aspose.TeX xử lý các đường dẫn tương đối trong các macro \input{} hoặc \includegraphics{} như thế nào?
Các đường dẫn tương đối được xác định trong tài liệu LaTeX sẽ tự động được phân giải tương đối với thư mục gốc được chỉ định bởi phiên bản IInputWorkingDirectory đang hoạt động.