Typowe wyjątki i błędy związane z czcionkami w systemie Linux
Przegląd
Gdy Aspose.Slides jest używany w systemie Linux, mogą wystąpić problemy związane z czcionkami, jeśli proces Java nie ma dostępu do wymaganych folderów czcionek lub katalogu tymczasowego, jeśli w systemie nie zainstalowano żadnych czcionek lub jeśli brakuje wymaganych bibliotek systemowych, takich jak fontconfig lub libfreetype.
Ten artykuł opisuje typowe błędy i wyjątki związane z czcionkami w systemie Linux oraz przedstawia rozwiązania ich usuwania. Wyjaśnia, jak sprawdzić dostęp do katalogów czcionek i TEMP, zainstalować wymagane czcionki i biblioteki oraz używać FontsLoader do ładowania czcionek bez ich instalacji systemowo.
Brak tekstu lub obrazów (EMF lub WMF) podczas wykonywania kodu w systemie Linux
Problem ten występuje w systemach z ograniczeniami w następujących przypadkach:
- Gdy nie zainstalowano żadnych czcionek lub gdy folder czcionek dla procesu java nie jest dostępny
- Gdy nie można uzyskać dostępu do katalogu TEMP.
Rozwiązanie
Sprawdź i potwierdź, że dostęp do katalogu TEMP oraz folderu czcionek został przyznany.
Obejście
Użyj FontsLoader do załadowania wymaganych czcionek bez ich instalacji:
FontsLoader.loadExternalFonts(pathToFontsFolders);
Jeśli nie można uzyskać dostępu do katalogu TEMP, użyj tego kodu, aby określić inny katalog jako TEMP dla 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);
}
Wyjątek: InvalidOperationException: Nie można znaleźć żadnych czcionek zainstalowanych w systemie
Ten wyjątek występuje gdy
- proces Java nie może uzyskać dostępu do folderu czcionek
- nie zainstalowano żadnych czcionek.
Rozwiązanie
-
Sprawdź i potwierdź, że dostęp do folderu czcionek dla procesu Java został przyznany.
-
Zainstaluj niektóre czcionki lub użyj FontsLoader.
-
Zainstaluj czcionki.
-
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
-
Używając FontsLoader:
FontsLoader.loadExternalFonts(pathToFontsFolders);
Wyjątek: NoClassDefFoundError: Nie można zainicjalizować klasy com.aspose.slides.internal.ey.this
Ten wyjątek występuje w systemie Linux, który nie ma fontconfig i czcionek.
Rozwiązanie
Zainstaluj fontconfig:
-
Ubuntu:
sudo apt-get update sudo apt-get -y install fontconfig -
CentOS:
sudo yum makecache sudo yum -y install fontconfig
Dodatkowo niektóre wersje open-jdk (na przykład alpine JDK) również wymagają zainstalowanych czcionek.
-
Ubuntu:
sudo apt-get install -y fonts-dejavu-core fc-cache -fv -
CentOS:
sudo yum -y install dejavu-sans-fonts fc-cache -fv
Wyjątek: UnsatisfiedLinkError: libfreetype.so.6: Nie można otworzyć pliku współdzielonego: Nie ma takiego pliku ani katalogu
Ten wyjątek występuje w systemie Linux, który nie ma biblioteki libfreetype.
Rozwiązanie
Zainstaluj libfreetype i 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