Linux 上與字體相關的常見例外與錯誤

概述

當在 Linux 上使用 Aspose.Slides 時,如果 Java 程序無法存取所需的字體資料夾或暫存目錄、系統未安裝任何字體,或缺少 fontconfig 或 libfreetype 等所需的系統函式庫,可能會發生與字體相關的問題。

本文說明了 Linux 上與字體相關的常見錯誤與例外,並提供解決方案。它闡述了如何檢查對字體及 TEMP 目錄的存取權限、安裝所需的字體與函式庫,以及使用 FontsLoader 載入字體而無需在系統範圍內安裝它們。

在 Linux 執行程式碼時缺少文字或影像(EMF 或 WMF)

此問題發生於具有限制的系統,情況如下:

  1. 未安裝任何字體,或 Java 程序的字體資料夾無法存取時
  2. TEMP 目錄無法存取時。

解決方案

檢查並確認已獲得對 TEMP 目錄與字體資料夾的存取權限。

變通方法

使用 FontsLoader 載入所需的字體而無需安裝它們:

FontsLoader.loadExternalFonts(pathToFontsFolders);

如果無法存取 TEMP 目錄,請使用以下程式碼將其他目錄指定為 Java 的 TEMP:

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

例外狀況:InvalidOperationException:無法在系統上找到任何已安裝的字體

當出現以下情況時會拋出此例外:

  1. Java 程序無法存取字體資料夾
  2. 系統未安裝任何字體。

解決方案

  1. 檢查並確認已授予 Java 程序對字體資料夾的存取權限。

  2. 安裝一些字體或使用 FontsLoader

  3. 安裝字體。

    • 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
      
    • Using FontsLoader:

      FontsLoader.loadExternalFonts(pathToFontsFolders);
      

例外狀況:NoClassDefFoundError:無法初始化類別 com.aspose.slides.internal.ey.this

此例外發生於缺少 fontconfig 與字體的 Linux 系統上。

解決方案

安裝 fontconfig:

  • Ubuntu:

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

    sudo yum makecache
    sudo yum -y install fontconfig
    

此外,某些 open-jdk 版本(例如 alpine JDK)亦 需要已安裝的字體

  • Ubuntu:

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

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

例外狀況:UnsatisfiedLinkError:libfreetype.so.6:無法開啟共享物件檔案:系統找不到檔案

此例外發生於缺少 libfreetype 函式庫的 Linux 系統上。

解決方案

安裝 libfreetype 與 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