Các ngoại lệ và lỗi liên quan đến phông chữ trên Linux

Tổng quan

Khi sử dụng Aspose.Slides trên Linux, có thể xuất hiện các vấn đề liên quan đến phông chữ nếu quá trình Java không thể truy cập vào các thư mục phông chữ cần thiết hoặc thư mục tạm, nếu hệ thống không cài đặt phông chữ, hoặc nếu các thư viện hệ thống cần thiết như fontconfig hoặc libfreetype bị thiếu.

Bài viết này mô tả các lỗi và ngoại lệ thường gặp liên quan đến phông chữ trên Linux và cung cấp các giải pháp để khắc phục. Nó giải thích cách kiểm tra quyền truy cập vào các thư mục phông chữ và TEMP, cách cài đặt các phông chữ và thư viện cần thiết, và cách sử dụng FontsLoader để tải phông chữ mà không cần cài đặt chúng trên toàn hệ thống.

Thiếu văn bản hoặc hình ảnh (EMF hoặc WMF) Khi mã được thực thi trên Linux

Vấn đề này xảy ra trong các hệ thống có hạn chế trong các trường hợp sau:

  1. Khi không có phông chữ nào được cài đặt hoặc khi thư mục phông chữ cho quá trình java không thể truy cập
  2. Khi không thể truy cập vào thư mục TEMP.

Giải pháp

Kiểm tra và xác nhận rằng đã được cấp quyền truy cập vào thư mục TEMP và thư mục phông chữ.

Cách khắc phục

Sử dụng FontsLoader để tải các phông chữ cần thiết mà không cần cài đặt chúng:

FontsLoader.loadExternalFonts(pathToFontsFolders);

Nếu không thể truy cập vào thư mục TEMP, sử dụng đoạn mã sau để chỉ định một thư mục khác làm TEMP cho Java:

String newTempFolder = "pathToTmpFolder";
String oldValue = System.getProperty("java.io.tmpdir");
java.io.File file = new java.io.File(newTempFolder);
if (!file.exists())
    file.mkdir();
System.setProperty("java.io.tmpdir", newTempFolder);
try {

    FontsLoader.loadExternalFonts(pathToFontsFolders);

    Presentation pres = ...
    // ....

} finally {
    System.setProperty("java.io.tmpdir", oldValue);
}

Ngoại lệ: InvalidOperationException: Không thể tìm thấy bất kỳ phông chữ nào được cài đặt trên hệ thống

Ngoại lệ này xảy ra khi

  1. quá trình Java không thể truy cập vào thư mục phông chữ
  2. không có phông chữ nào được cài đặt.

Giải pháp

  1. Kiểm tra và xác nhận rằng đã được cấp quyền truy cập vào thư mục phông chữ cho quá trình Java.

  2. Cài đặt một số phông chữ hoặc sử dụng FontsLoader.

  3. Cài đặt phông chữ.

    • Ubuntu:

      sudo apt-get update
      sudo apt-get install -y fonts-dejavu-core
      fc-cache -fv
      
    • CentOS:

      sudo yum makecache
      sudo yum -y install dejavu-sans-fonts
      fc-cache -fv
      
    • Sử dụng FontsLoader:

      FontsLoader.loadExternalFonts(pathToFontsFolders);
      

Ngoại lệ: NoClassDefFoundError: Không thể khởi tạo lớp com.aspose.slides.internal.ey.this

Ngoại lệ này xảy ra trên hệ thống Linux thiếu fontconfig và phông chữ.

Giải pháp

Cài đặt fontconfig:

  • Ubuntu:

    sudo apt-get update
    sudo apt-get -y install fontconfig
    
  • CentOS:

    sudo yum makecache
    sudo yum -y install fontconfig
    

Ngoài ra, một số phiên bản open-jdk (ví dụ, alpine JDK) cũng yêu cầu cài đặt phông chữ.

  • Ubuntu:

    sudo apt-get install -y fonts-dejavu-core
    fc-cache -fv
    
  • CentOS:

    sudo yum -y install dejavu-sans-fonts
    fc-cache -fv
    

Ngoại lệ: UnsatisfiedLinkError: libfreetype.so.6: Không thể mở tệp đối tượng chia sẻ: Không tồn tại tệp hoặc thư mục

Ngoại lệ này xảy ra trên hệ thống Linux thiếu thư viện libfreetype.

Giải pháp

Cài đặt libfreetype và fontconfig:

  • Ubuntu:

    sudo apt-get update
    sudo apt-get install libfreetype6
    sudo apt-get -y install fontconfig
    
  • CentOS:

    sudo yum makecache
    sudo yum install libfreetype6
    sudo yum -y install fontconfig