Veelvoorkomende uitzonderingen en fouten met lettertypen op Linux
Overzicht
Wanneer Aspose.Slides op Linux wordt gebruikt, kunnen er lettertype‑gerelateerde problemen optreden als het Java‑proces geen toegang heeft tot de benodigde lettertype‑mappen of de tijdelijke map, als er geen lettertypen op het systeem geïnstalleerd zijn, of als vereiste systeembibliotheken zoals fontconfig of libfreetype ontbreken.
Dit artikel beschrijft veelvoorkomende fouten en uitzonderingen met betrekking tot lettertypen op Linux en biedt oplossingen om deze op te lossen. Het legt uit hoe je de toegang tot lettertype‑ en TEMP‑mappen controleert, de benodigde lettertypen en bibliotheken installeert, en FontsLoader gebruikt om lettertypen te laden zonder ze systeemwijd te installeren.
Ontbrekende tekst of afbeeldingen (EMF of WMF) wanneer code wordt uitgevoerd op Linux
Dit probleem treedt op in systemen met beperkingen in de volgende gevallen:
- Wanneer er geen lettertypen geïnstalleerd zijn of wanneer de lettertype‑map voor het Java‑proces niet toegankelijk is
- Wanneer de TEMP‑map niet toegankelijk is.
Oplossing
Controleer en bevestig dat toegang tot de TEMP‑map en de lettertype‑map is verleend.
Omzeilingsmethode
Gebruik FontsLoader om de vereiste lettertypen te laden zonder ze systeemwijd te installeren:
FontsLoader.loadExternalFonts(pathToFontsFolders);
Als de TEMP‑map niet toegankelijk is, gebruik dan deze code om een andere map als TEMP voor Java op te geven:
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);
}
Uitzondering: InvalidOperationException: Kan geen enkele geïnstalleerde lettertype op het systeem vinden
Deze uitzondering treedt op wanneer
- het Java‑proces geen toegang heeft tot de lettertype‑map
- er geen lettertypen geïnstalleerd zijn.
Oplossing
-
Controleer en bevestig dat toegang tot de lettertype‑map voor het Java‑proces is verleend.
-
Installeer enkele lettertypen of gebruik FontsLoader.
-
Installeer lettertypen.
-
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);
-
Uitzondering: NoClassDefFoundError: Kon klasse com.aspose.slides.internal.ey.this niet initialiseren
Deze uitzondering treedt op op een Linux‑systeem dat fontconfig en lettertypen mist.
Oplossing
Installeer fontconfig:
-
Ubuntu:
sudo apt-get update sudo apt-get -y install fontconfig -
CentOS:
sudo yum makecache sudo yum -y install fontconfig
Bovendien vereisen sommige open-jdk‑versies (bijvoorbeeld alpine JDK) ook geïnstalleerde lettertypen.
-
Ubuntu:
sudo apt-get install -y fonts-dejavu-core fc-cache -fv -
CentOS:
sudo yum -y install dejavu-sans-fonts fc-cache -fv
Uitzondering: UnsatisfiedLinkError: libfreetype.so.6: Kan gedeeld objectbestand niet openen: Bestand bestaat niet
Deze uitzondering treedt op op een Linux‑systeem dat de libfreetype‑bibliotheek mist.
Oplossing
Installeer libfreetype en 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