Běžné výjimky a chyby související s fonty na Linuxu
Přehled
Když je Aspose.Slides používán na Linuxu, mohou se vyskytnout problémy související s fonty, pokud Java proces nemůže získat přístup k požadovaným složkám s fonty nebo dočasnému adresáři, pokud nejsou ve systému nainstalovány žádné fonty, nebo pokud chybí požadované systémové knihovny, jako je fontconfig nebo libfreetype.
Chybějící text nebo obrázky (EMF nebo WMF) při spouštění kódu na Linuxu
Tento problém se vyskytuje v systémech s omezeními v těchto případech:
- Když nejsou nainstalovány žádné fonty nebo když není přístupná složka s fonty pro Java proces
- Když není přístupný adresář TEMP.
Řešení
Zkontrolujte a potvrďte, že přístup k adresáři TEMP a složce s fonty byl povolen.
Obcházení
Použijte FontsLoader k načtení požadovaných fontů bez jejich instalace:
FontsLoader.loadExternalFonts(pathToFontsFolders);
Pokud není přístup k adresáři TEMP, použijte tento kód k určení jiného adresáře jako TEMP pro Javu:
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);
}
Výjimka: InvalidOperationException: Nelze najít žádné nainstalované fonty v systému
Tato výjimka nastává, když
- Java proces nemůže získat přístup ke složce s fonty
- nebyly nainstalovány žádné fonty.
Řešení
-
Zkontrolujte a potvrďte, že přístup ke složce s fonty pro Java proces byl povolen.
-
Nainstalujte nějaké fonty nebo použijte FontsLoader.
-
Instalace fontů.
-
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 -
Použití FontsLoader:
FontsLoader.loadExternalFonts(pathToFontsFolders);
-
Výjimka: NoClassDefFoundError: Nepodařilo se inicializovat třídu com.aspose.slides.internal.ey.this
Tato výjimka nastává na Linux systému, který postrádá fontconfig a fonty.
Řešení
Nainstalujte fontconfig:
-
Ubuntu:
sudo apt-get update sudo apt-get -y install fontconfig -
CentOS:
sudo yum makecache sudo yum -y install fontconfig
Navíc některé verze open-jdk (například alpine JDK) také vyžadují nainstalované fonty.
-
Ubuntu:
sudo apt-get install -y fonts-dejavu-core fc-cache -fv -
CentOS:
sudo yum -y install dejavu-sans-fonts fc-cache -fv
Výjimka: UnsatisfiedLinkError: libfreetype.so.6: Nelze otevřít sdílený objekt: Soubor nebo adresář neexistuje
Tato výjimka nastává na Linux systému, který postrádá knihovnu libfreetype.
Řešení
Nainstalujte libfreetype a 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