Общие исключения и ошибки, связанные с шрифтами в Linux
Недостающий текст или изображения (emf или wmf) при выполнении кода в Linux
Эта проблема возникает в системах с ограничениями в следующих случаях:
- Когда шрифты не установлены или когда папка со шрифтами для процесса Java недоступна
- Когда папка TEMP недоступна.
Решение
Проверьте и подтвердите, что доступ к папке TEMP и папке со шрифтами был предоставлен.
Обходной путь
Используйте FontsLoader, чтобы загрузить необходимые шрифты без их установки:
FontsLoader.loadExternalFonts(pathToFontsFolders);
Если к папке TEMP нет доступа, используйте этот код, чтобы указать другую папку в качестве TEMP для 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); }
Исключение: InvalidOperationException: Не удается найти установленные на системе шрифты
Это исключение возникает, когда
- процесс Java не может получить доступ к папке со шрифтами
- шрифты не установлены.
Решение
-
Проверьте и подтвердите, что доступ к папке со шрифтами для процесса Java был предоставлен.
-
Установите несколько шрифтов или используйте FontsLoader.
-
Установите шрифты.
- Ubuntu:
```
sudo apt-get update
sudo apt-get install -y fonts-dejavu-core
fc-cache -fv
```php
```
* CentOS:
```php
```
sudo yum makecache
sudo yum -y install dejavu-sans-fonts
fc-cache -fv
```php
```
* Используя [FontsLoader](https://reference.aspose.com/slides/php-java/aspose.slides/FontsLoader):
```php
```
FontsLoader.loadExternalFonts(pathToFontsFolders);
```php
```
## **Исключение: NoClassDefFoundError: Не удалось инициализировать класс com.aspose.slides.internal.ey.this**
Это исключение возникает в системе Linux, где отсутствуют fontconfig и шрифты.
### Решение:
Установите fontconfig:
* Ubuntu:
```php
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: не удается открыть общий объектный файл: Нет такого файла или каталога
Это исключение возникает в системе Linux, где отсутствует библиотека libfreetype.
Решение:
Установите 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