Exceptions et erreurs courantes liées aux polices sous Linux

Texte ou images manquants (EMF ou WMF) lorsque le code est exécuté sous Linux

Ce problème se produit dans les systèmes avec des restrictions dans les cas suivants :

  1. Lorsque aucune police n’est installée ou que le dossier des polices pour le processus Java n’est pas accessible
  2. Lorsque le répertoire TEMP n’est pas accessible.

Solution

Vérifiez et confirmez que l’accès au répertoire TEMP et au dossier des polices a été accordé.

Solution de contournement

Utilisez FontsLoader pour charger les polices requises sans les installer :

FontsLoader.loadExternalFonts(pathToFontsFolders);

Si le répertoire TEMP n’est pas accessible, utilisez ce code pour spécifier un autre répertoire comme TEMP pour 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);
}

Exception : InvalidOperationException : Impossible de trouver des polices installées sur le système

Cette exception se produit lorsque

  1. le processus Java ne peut pas accéder au dossier des polices
  2. aucune police n’a été installée.

Solution

  1. Vérifiez et confirmez que l’accès au dossier des polices pour le processus Java a été accordé.

  2. Installez quelques polices ou utilisez FontsLoader.

  3. Installez des polices.

    • 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
      
    • En utilisant FontsLoader:

      FontsLoader.loadExternalFonts(pathToFontsFolders);
      

Exception : NoClassDefFoundError : Impossible d’initialiser la classe com.aspose.slides.internal.ey.this

Cette exception se produit sur un système Linux qui ne possède pas fontconfig et de polices.

Solution

Installez fontconfig :

  • Ubuntu:

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

    sudo yum makecache
    sudo yum -y install fontconfig
    

De plus, certaines versions d’open‑jdk (par exemple, alpine JDK) nécessitent également des polices installées.

  • Ubuntu:

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

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

Exception : UnsatisfiedLinkError : libfreetype.so.6 : Impossible d’ouvrir le fichier d’objet partagé : Aucun fichier ou dossier de ce type

Cette exception se produit sur un système Linux qui ne possède pas la bibliothèque libfreetype.

Solution

Installez libfreetype et 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