Linux 上與字體相關的常見例外與錯誤
Contents
[
Hide
]
概述
當在 Linux 上使用 Aspose.Slides 時,如果 Java 程序無法存取所需的字體資料夾或暫存目錄、系統未安裝任何字體,或缺少 fontconfig 或 libfreetype 等所需的系統函式庫,可能會發生與字體相關的問題。
本文說明了 Linux 上與字體相關的常見錯誤與例外,並提供解決方案。它闡述了如何檢查對字體及 TEMP 目錄的存取權限、安裝所需的字體與函式庫,以及使用 FontsLoader 載入字體而無需在系統範圍內安裝它們。
在 Linux 執行程式碼時缺少文字或影像(EMF 或 WMF)
此問題發生於具有限制的系統,情況如下:
- 未安裝任何字體,或 Java 程序的字體資料夾無法存取時
- 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:無法在系統上找到任何已安裝的字體
當出現以下情況時會拋出此例外:
- Java 程序無法存取字體資料夾
- 系統未安裝任何字體。
解決方案
-
檢查並確認已授予 Java 程序對字體資料夾的存取權限。
-
安裝一些字體或使用 FontsLoader。
-
安裝字體。
-
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