Κοινές Εξαιρέσεις και Σφάλματα που Αφορούν Γραμματοσειρές σε Linux
Επισκόπηση
Όταν το Aspose.Slides χρησιμοποιείται σε Linux, ενδέχεται να εμφανιστούν προβλήματα σχετιζόμενα με τις γραμματοσειρές εάν η διαδικασία Java δεν μπορεί να έχει πρόσβαση στους απαιτούμενους φακέλους γραμματοσειρών ή στον προσωρινό φάκελο, εάν δεν έχουν εγκατασταθεί γραμματοσειρές στο σύστημα, ή εάν λείπουν οι απαιτούμενες βιβλιοθήκες συστήματος όπως τα fontconfig ή libfreetype.
Αυτό το άρθρο περιγράφει συνηθισμένα σφάλματα και εξαιρέσεις σχετικές με τις γραμματοσειρές στο Linux και παρέχει λύσεις για την επίλυσή τους. Εξηγεί πώς να ελέγξετε την πρόσβαση στους φακέλους γραμματοσειρών και TEMP, να εγκαταστήσετε τις απαιτούμενες γραμματοσειρές και βιβλιοθήκες, και να χρησιμοποιήσετε το FontsLoader για να φορτώσετε γραμματοσειρές χωρίς να τις εγκαταστήσετε σε ολόκληρο το σύστημα.
Έλλειψη κειμένου ή εικόνων (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: Cannot Find Any Fonts Installed on the System
Αυτή η εξαίρεση εμφανίζεται όταν
- η διαδικασία 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: Could Not Initialize Class com.aspose.slides.internal.ey.this
Αυτή η εξαίρεση εμφανίζεται σε σύστημα Linux που δεν διαθέτει fontconfig και γραμματοσειρές.
Λύση
Εγκαταστήστε το 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: Cannot Open Shared Object File: No Such File or Directory
Αυτή η εξαίρεση εμφανίζεται σε σύστημα 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