Tạo PDF từ LaTeX trong Java

LaTeX được sử dụng rộng rãi để tạo tài liệu khoa học và kỹ thuật. Tệp LaTeX (TEX hoặc LTX) là tài liệu nguồn chứa đầy các lệnh để chỉ định định dạng của tài liệu, bao gồm văn bản, ký hiệu, biểu thức toán học và đồ họa. Chúng tôi có thể dễ dàng tạo tài liệu PDF từ nguồn LaTeX theo chương trình. PDF cho phép chia sẻ tài liệu ở định dạng chỉ đọc mà không ảnh hưởng đến phong cách hoặc bố cục của chúng. Trong bài này, chúng ta sẽ học cách tạo một tài liệu PDF từ tệp nguồn LaTeX trong Java.

Các chủ đề sau sẽ được đề cập trong bài viết này:

Java API để tạo PDF từ LaTeX

Để tạo tài liệu PDF từ tệp nguồn LaTeX, chúng tôi sẽ sử dụng API Aspose.TeX for Java. Nó cho phép sắp chữ các tệp TeX sang các định dạng tệp khác nhau như PDF, XPS hoặc hình ảnh. Vui lòng tải xuống JAR của API hoặc thêm cấu hình pom.xml sau vào ứng dụng Java dựa trên Maven.

Kho:

<repository>
    <id>AsposeJavaAPI</id>
    <name>Aspose Java API</name>
    <url>https://repository.aspose.com/repo/</url>
</repository>

Sự phụ thuộc:

<dependency>
    <groupId>com.aspose</groupId>
    <artifactId>aspose-tex</artifactId>
    <version>21.11</version>
    <type>jar</type>
</dependency>

Tạo PDF từ tệp LaTeX TeX trong Java

Chúng tôi có thể tạo tài liệu PDF từ tệp LaTeX (TeX) bằng cách làm theo các bước dưới đây:

  1. Đầu tiên, tạo một thể hiện của lớp TeXOptions bằng phương thức consoleAppOptions().
  2. Đặt cấu hình TeX là TeXConfig.objectLaTeX().
  3. Tiếp theo, thiết lập các thư mục làm việc đầu vào và đầu ra.
  4. Sau đó, chỉ định bảng điều khiển hoặc luồng bộ nhớ làm thiết bị đầu cuối đầu ra.
  5. Sau đó, thiết lập các tùy chọn để hiển thị thành định dạng PDF.
  6. Cuối cùng, gọi phương thức run() cho thể hiện lớp TexJob mới được tạo với PDF đầu ra và đối tượng lớp PdfDevice làm đối số.

Ví dụ mã sau đây trình bày cách tạo PDF từ tệp TeX bằng Java.

// Ví dụ mã này trình bày cách tạo PDF từ tệp nguồn TeX.
// Thư mục làm việc
String dataDir = "D:\\Files\\Tex\\";

// Tạo các tùy chọn sắp chữ.
TeXOptions options = TeXOptions.consoleAppOptions(TeXConfig.objectLaTeX());

// Chỉ định một thư mục làm việc của hệ thống tệp cho đầu vào.
options.setInputWorkingDirectory(new InputFileSystemDirectory(dataDir));

// Chỉ định một thư mục làm việc của hệ thống tệp cho đầu ra.
options.setOutputWorkingDirectory(new OutputFileSystemDirectory(dataDir));

// Chỉ định luồng bộ nhớ làm thiết bị đầu cuối đầu ra.
options.setTerminalOut(new OutputMemoryTerminal());

// Đặt các tùy chọn để hiển thị thành định dạng PDF.
options.setSaveOptions(new PdfSaveOptions());

// Chạy sắp chữ.
new TeXJob(dataDir + "sample.tex", new PdfDevice(), options).run();
Tạo PDF từ tệp LaTeX TeX trong Java

Tạo PDF từ tệp LaTeX TeX trong Java.

Tạo PDF từ Tệp LTX trong Java

LaTeX sử dụng các thẻ đánh dấu và thuộc tính thiết lập kiểu mở rộng tệp LTX xác định cấu trúc và nội dung tài liệu. Chúng tôi cũng có thể tạo PDF từ tệp LaTeX (LTX) bằng cách làm theo các bước đã đề cập trước đó. Tuy nhiên, chúng ta chỉ cần nhập tệp nguồn có phần mở rộng .ltx ở bước cuối cùng.

Ví dụ mã sau đây trình bày cách tạo PDF từ tệp LTX bằng Java.

// Ví dụ mã này trình bày cách tạo PDF từ tệp nguồn LTX.
// Thư mục làm việc
String dataDir = "D:\\Files\\Tex\\";

// Tạo các tùy chọn sắp chữ.
TeXOptions options = TeXOptions.consoleAppOptions(TeXConfig.objectLaTeX());

// Chỉ định một thư mục làm việc của hệ thống tệp cho đầu vào.
options.setInputWorkingDirectory(new InputFileSystemDirectory(dataDir));

// Chỉ định một thư mục làm việc của hệ thống tệp cho đầu ra.
options.setOutputWorkingDirectory(new OutputFileSystemDirectory(dataDir));

// Chỉ định luồng bộ nhớ làm thiết bị đầu cuối đầu ra.
options.setTerminalOut(new OutputMemoryTerminal());

// Đặt các tùy chọn để hiển thị thành định dạng PDF.
options.setSaveOptions(new PdfSaveOptions());

// Chạy sắp chữ.
new TeXJob(dataDir + "sample.ltx", new PdfDevice(), options).run();

Chuyển đổi TeX sang XPS bằng Java

Chúng tôi cũng có thể chuyển đổi tệp LaTeX (TeX) sang XPS bằng cách làm theo các bước đã đề cập trước đó. Tuy nhiên, chúng ta chỉ cần đặt XpsSaveOptions thay vì PdfSaveOptions ở bước # 5.

Ví dụ mã sau đây trình bày cách chuyển đổi TeX sang XPS bằng Java.

// Ví dụ mã này trình bày cách chuyển đổi Tex sang XPS.
// Thư mục làm việc
String dataDir = "D:\\Files\\Tex\\";

// Tạo các tùy chọn sắp chữ.
TeXOptions options = TeXOptions.consoleAppOptions(TeXConfig.objectLaTeX());

// Chỉ định một thư mục làm việc của hệ thống tệp cho đầu vào.
options.setInputWorkingDirectory(new InputFileSystemDirectory(dataDir));

// Chỉ định một thư mục làm việc của hệ thống tệp cho đầu ra.
options.setOutputWorkingDirectory(new OutputFileSystemDirectory(dataDir));

// Chỉ định luồng bộ nhớ làm thiết bị đầu cuối đầu ra.
options.setTerminalOut(new OutputMemoryTerminal());

// Đặt các tùy chọn để hiển thị thành định dạng XPS.
options.setSaveOptions(new XpsSaveOptions());

// Chạy sắp chữ.
new TeXJob(dataDir + "sample.tex", new PdfDevice(), options).run();

Chuyển đổi Thư mục ZIP TeX thành Thư mục ZIP PDF bằng Java

Chúng tôi có thể chuyển đổi nhiều tệp TeX được nén trong một kho lưu trữ ZIP sang PDF cùng một lúc bằng cách làm theo các bước dưới đây:

  1. Đầu tiên, mở các luồng trên các kho lưu trữ ZIP làm thư mục làm việc đầu vào và đầu ra.
  2. Tiếp theo, tạo một thể hiện của lớp TeXOptions bằng phương thức consoleAppOptions().
  3. Sau đó, đặt cấu hình TeX là TeXConfig.objectLaTeX().
  4. Tiếp theo, đặt thư mục ZIP đầu vào và đầu ra.
  5. Sau đó, chỉ định bảng điều khiển hoặc luồng bộ nhớ làm thiết bị đầu cuối đầu ra.
  6. Sau đó, thiết lập các tùy chọn để hiển thị thành định dạng PDF.
  7. Cuối cùng, gọi phương thức run() cho thể hiện lớp TexJob mới được tạo với PDF đầu ra và đối tượng lớp PdfDevice làm đối số.

Ví dụ mã sau đây trình bày cách chuyển đổi tệp lưu trữ TeX ZIP thành tệp lưu trữ ZIP PDF bằng Java.

// Ví dụ mã này trình bày cách chuyển đổi thư mục TeX ZIP thành Thư mục ZIP PDF.
// Thư mục làm việc
String dataDir = "D:\\Files\\Tex\\";

// Mở luồng trên kho lưu trữ ZIP sẽ đóng vai trò là thư mục làm việc đầu vào.
final InputStream inZipStream = new FileInputStream(dataDir + "files.zip");

// Mở luồng trên kho lưu trữ ZIP sẽ đóng vai trò là thư mục làm việc đầu ra.
final OutputStream outZipStream = new FileOutputStream(dataDir + "files-out.zip");

try {
    // Tạo các tùy chọn chuyển đổi cho định dạng ObjectTeX mặc định trên phần mở rộng công cụ ObjectTeX.
    TeXOptions options = TeXOptions.consoleAppOptions(TeXConfig.objectLaTeX());

    // Chỉ định một thư mục làm việc lưu trữ ZIP cho đầu vào.
    options.setInputWorkingDirectory(new InputZipDirectory(inZipStream, "files"));

    // Chỉ định thư mục làm việc của kho lưu trữ ZIP cho đầu ra.
    options.setOutputWorkingDirectory(new OutputZipDirectory(outZipStream));

    // Chỉ định bảng điều khiển làm thiết bị đầu cuối đầu ra.
    options.setTerminalOut(new OutputConsoleTerminal()); // Default. Not necessary to specify.

    // Xác định các tùy chọn lưu.
    options.setSaveOptions(new PdfSaveOptions());

    // Điều hành công việc.
    TeXJob job = new TeXJob("sample", new PdfDevice(), options);
    job.run();

    // Đối với kết quả đầu ra để nhìn ghi. 
    options.getTerminalOut().getWriter().newLine();

    // Hoàn thiện kho lưu trữ ZIP đầu ra.
    ((OutputZipDirectory)options.getOutputWorkingDirectory()).finish();
} finally {
  outZipStream.close();
}
Chuyển đổi tệp lưu trữ ZIP TeX thành tệp lưu trữ ZIP PDF

Chuyển đổi tệp lưu trữ ZIP TeX thành tệp lưu trữ ZIP PDF.

Nhận giấy phép miễn phí

Bạn có thể nhận giấy phép tạm thời miễn phí để dùng thử thư viện mà không có giới hạn đánh giá.

Sự kết luận

Trong bài viết này, chúng tôi đã học cách:

  • tạo đầu ra PDF từ tệp nguồn LaTeX trong Java;
  • tạo tài liệu đầu ra XPS từ tệp TeX theo lập trình;
  • chuyển đổi tệp lưu trữ ZIP TeX thành tệp lưu trữ ZIP PDF bằng Java.

Bên cạnh đó, bạn có thể tìm hiểu thêm về Aspose.TeX for Java API bằng cách sử dụng tài liệu. Trong trường hợp có bất kỳ sự mơ hồ nào, vui lòng liên hệ với chúng tôi trên diễn đàn.

Xem thêm