Προσαρμογή γραμματοσειρών PowerPoint σε PHP
Επισκόπηση
Το Aspose.Slides σας επιτρέπει να χρησιμοποιείτε προσαρμοσμένες γραμματοσειρές σε παρουσιάσεις χωρίς να τις εγκαταστήσετε στο λειτουργικό σύστημα. Μπορείτε να φορτώσετε γραμματοσειρές από προσαρμοσμένους φακέλους, να παρέχετε γραμματοσειρές για μια συγκεκριμένη παρουσίαση μέσω πηγών γραμματοσειρών σε επίπεδο εγγράφου, ή να φορτώσετε εξωτερικές γραμματοσειρές απευθείας από δυαδικά δεδομένα.
Οι φορτωμένες γραμματοσειρές χρησιμοποιούνται όταν μια παρουσίαση αποδίδεται ή εξάγεται, για παράδειγμα σε PDF, εικόνες και άλλες υποστηριζόμενες μορφές. Αυτό βοηθά να διατηρείται η έξοδος της παρουσίασης συνεπής σε διαφορετικά περιβάλλοντα. Το άρθρο εξηγεί επίσης πώς να ελέγξετε τους φακέλους γραμματοσειρών που χρησιμοποιεί το Aspose.Slides και πώς να καθαρίσετε τη μνήμη cache των γραμματοσειρών μετά τη χρήση εξωτερικών γραμματοσειρών.
Η καταχώριση προσαρμοσμένων γραμματοσειρών για απόδοση είναι ξεχωριστή από την ενσωμάτωση γραμματοσειρών σε αρχείο PPTX. Εάν χρειάζεται μια γραμματοσειρά να αποθηκευθεί μέσα στην παρουσίαση, χρησιμοποιήστε ρητά τις δυνατότητες ενσωμάτωσης γραμματοσειρών.
Το Aspose Slides σας επιτρέπει να φορτώνετε αυτές τις γραμματοσειρές χρησιμοποιώντας τη μέθοδο loadExternalFonts:
Φόρτωση Προσαρμοσμένων Γραμματοσειρών
Το Aspose.Slides σας επιτρέπει να φορτώνετε γραμματοσειρές που χρησιμοποιούνται σε μια παρουσίαση χωρίς να τις εγκαταστήσετε στο σύστημα. Αυτό επηρεάζει την έξοδο εξαγώγης — όπως PDF, εικόνες και άλλες υποστηριζόμενες μορφές — ώστε τα παραγόμενα έγγραφα να είναι συνεπή σε διαφορετικά περιβάλλοντα. Οι γραμματοσειρές φορτώνονται από προσαρμοσμένους καταλόγους.
- Καθορίστε έναν ή περισσότερους φακέλους που περιέχουν τα αρχεία γραμματοσειρών.
- Καλέστε τη στατική μέθοδο FontsLoader::loadExternalFonts για να φορτώσετε γραμματοσειρές από αυτούς τους φακέλους.
- Φορτώστε και αποδώστε/εξάγετε την παρουσίαση.
- Καλέστε το FontsLoader::clearCache για να καθαρίσετε τη μνήμη cache των γραμματοσειρών.
Το ακόλουθο παράδειγμα κώδικα επιδεικνύει τη διαδικασία φόρτωσης γραμματοσειρών:
// Ορίστε φακέλους που περιέχουν προσαρμοσμένα αρχεία γραμματοσειρών.
$externalFontFolder1 = __DIR__ . "/external-fonts-1";
$externalFontFolder2 = __DIR__ . "/external-fonts-2";
$fontFolders = array($externalFontFolder1, $externalFontFolder2);
// Φορτώστε προσαρμοσμένες γραμματοσειρές από τους καθορισμένους φακέλους.
FontsLoader::loadExternalFonts($fontFolders);
$presentation = null;
try {
$presentationPath = __DIR__ . "/sample.pptx";
$presentation = new Presentation($presentationPath);
// Αποδώστε/εξάγετε την παρουσίαση (π.χ., σε PDF, εικόνες ή άλλες μορφές) χρησιμοποιώντας τις φορτωμένες γραμματοσειρές.
$outputPath = __DIR__ . "/output.pdf";
$presentation->save($outputPath, SaveFormat::Pdf);
} finally {
if ($presentation != null) $presentation->dispose();
// Καθαρίστε τη μνήμη cache των γραμματοσειρών μετά το τέλος της εργασίας.
FontsLoader::clearCache();
}
Note
Το FontsLoader::loadExternalFonts προσθέτει επιπλέον φακέλους στις διαδρομές αναζήτησης γραμματοσειρών, αλλά δεν αλλάζει τη σειρά αρχικοποίησης των γραμματοσειρών.
Οι γραμματοσειρές αρχικοποιούνται με αυτή τη σειρά:
- Η προεπιλεγμένη διαδρομή γραμματοσειρών του λειτουργικού συστήματος.
- Οι διαδρομές που φορτώνονται μέσω του FontsLoader.
Λήψη Προσαρμοσμένων Φακέλων Γραμματοσειράς
Το Aspose.Slides παρέχει τη μέθοδο getFontFolders που σας επιτρέπει να βρείτε φακέλους γραμματοσειρών. Αυτή η μέθοδος επιστρέφει φακέλους που προστέθηκαν μέσω της μεθόδου LoadExternalFonts και τους φακέλους γραμματοσειρών του συστήματος.
Αυτός ο κώδικας PHP δείχνει πώς να χρησιμοποιήσετε το getFontFolders:
# Αυτή η γραμμή εμφανίζει φακέλους όπου γίνεται η αναζήτηση αρχείων γραμματοσειρών.
# Αυτοί είναι οι φάκελοι που προστέθηκαν μέσω της μεθόδου LoadExternalFonts και οι φάκελοι γραμματοσειρών του συστήματος.
$fontFolders = FontsLoader::getFontFolders();
Καθορισμός Προσαρμοσμένων Γραμματοσειρών που Χρησιμοποιούνται σε Παρουσίαση
Το Aspose.Slides παρέχει τη μέθοδο LoadOptions.setDocumentLevelFontSources που σας επιτρέπει να καθορίσετε εξωτερικές γραμματοσειρές που θα χρησιμοποιηθούν με την παρουσίαση.
Αυτός ο κώδικας PHP δείχνει πώς να χρησιμοποιήσετε τη LoadOptions.setDocumentLevelFontSources:
$javaArray = new JavaClass("java.lang.reflect.Array");
$javaByteType = (new JavaClass("java.lang.Byte"))->TYPE;
$customFontsDirectory = __DIR__ . "/customfonts/";
$customFont1Path = $customFontsDirectory . "CustomFont1.ttf";
$customFontFile1 = new Java("java.io.File", $customFont1Path);
$customFontFile1Length = $customFontFile1->length();
$memoryFont1 = $javaArray->newInstance($javaByteType, $customFontFile1Length);
$dataInputStream1 = null;
try {
$fileInputStream1 = new Java("java.io.FileInputStream", $customFontFile1);
$dataInputStream1 = new Java("java.io.DataInputStream", $fileInputStream1);
$dataInputStream1->readFully($memoryFont1);
} finally {
if (!java_is_null($dataInputStream1)) $dataInputStream1->close();
}
$customFont2Path = $customFontsDirectory . "CustomFont2.ttf";
$customFontFile2 = new Java("java.io.File", $customFont2Path);
$customFontFile2Length = $customFontFile2->length();
$memoryFont2 = $javaArray->newInstance($javaByteType, $customFontFile2Length);
$dataInputStream2 = null;
try {
$fileInputStream2 = new Java("java.io.FileInputStream", $customFontFile2);
$dataInputStream2 = new Java("java.io.DataInputStream", $fileInputStream2);
$dataInputStream2->readFully($memoryFont2);
} finally {
if (!java_is_null($dataInputStream2)) $dataInputStream2->close();
}
$loadOptions = new LoadOptions();
$assetFontsFolder = __DIR__ . "/assets/fonts";
$globalFontsFolder = __DIR__ . "/global/fonts";
$loadOptions->getDocumentLevelFontSources()->setFontFolders(array($assetFontsFolder, $globalFontsFolder));
$loadOptions->getDocumentLevelFontSources()->setMemoryFonts(array($memoryFont1, $memoryFont2 ));
$presentationPath = __DIR__ . "/MyPresentation.pptx";
$presentation = new Presentation($presentationPath, $loadOptions);
try {
# Εργασία με την παρουσίαση
# Τα CustomFont1, CustomFont2 και οι γραμματοσειρές από τους φακέλους assets\fonts & global\fonts και τους υποφακέλους τους είναι διαθέσιμα στην παρουσίαση
} finally {
if (!java_is_null($presentation)) {
$presentation->dispose();
}
}
Διαχείριση Γραμματοσειρών Εξωτερικά
Το Aspose.Slides παρέχει τη μέθοδο loadExternalFont(byte[] data) που σας επιτρέπει να φορτώσετε εξωτερικές γραμματοσειρές από δυαδικά δεδομένα.
Αυτός ο κώδικας PHP επιδεικνύει τη διαδικασία φόρτωσης γραμματοσειράς από πίνακα byte:
$javaArray = new JavaClass("java.lang.reflect.Array");
$javaByteType = (new JavaClass("java.lang.Byte"))->TYPE;
$fontDirectory = __DIR__ . "/";
$dataInputStream = null;
try {
$fontPath = $fontDirectory . "ARIALN.TTF";
$fileInputStream = new Java("java.io.FileInputStream", $fontPath);
$dataInputStream = new Java("java.io.DataInputStream", $fileInputStream);
$fontBytes = $javaArray->newInstance($javaByteType, $dataInputStream->available());
$dataInputStream->readFully($fontBytes);
} finally {
if (!java_is_null($dataInputStream)) $dataInputStream->close();
}
FontsLoader::loadExternalFont($fontBytes);
$dataInputStream = null;
try {
$fontPath = $fontDirectory . "ARIALNBI.TTF";
$fileInputStream = new Java("java.io.FileInputStream", $fontPath);
$dataInputStream = new Java("java.io.DataInputStream", $fileInputStream);
$fontBytes = $javaArray->newInstance($javaByteType, $dataInputStream->available());
$dataInputStream->readFully($fontBytes);
} finally {
if (!java_is_null($dataInputStream)) $dataInputStream->close();
}
FontsLoader::loadExternalFont($fontBytes);
$dataInputStream = null;
try {
$fontPath = $fontDirectory . "ARIALNI.TTF";
$fileInputStream = new Java("java.io.FileInputStream", $fontPath);
$dataInputStream = new Java("java.io.DataInputStream", $fileInputStream);
$fontBytes = $javaArray->newInstance($javaByteType, $dataInputStream->available());
$dataInputStream->readFully($fontBytes);
} finally {
if (!java_is_null($dataInputStream)) $dataInputStream->close();
}
FontsLoader::loadExternalFont($fontBytes);
try {
$presentation = new Presentation();
try {
# εξωτερική γραμματοσειρά που φορτώθηκε κατά τη διάρκεια ζωής της παρουσίασης
} finally {
if (!java_is_null($presentation)) {
$presentation->dispose();
}
}
} finally {
FontsLoader->clearCache();
}
Συχνές Ερωτήσεις
Επηρεάζουν οι προσαρμοσμένες γραμματοσειρές την εξαγωγή σε όλες τις μορφές (PDF, PNG, SVG, HTML);
Ναι. Οι συνδεδεμένες γραμματοσειρές χρησιμοποιούνται από τον renderer σε όλες τις μορφές εξαγωγής.
Ενσωματώνονται αυτόματα οι προσαρμοσμένες γραμματοσειρές στο τελικό PPTX;
Όχι. Η καταχώριση μιας γραμματοσειράς για απόδοση δεν είναι το ίδιο με την ενσωμάτωσή της σε PPTX. Εάν χρειάζεστε τη γραμματοσειρά να μεταφέρεται μέσα στο αρχείο παρουσίασης, πρέπει να χρησιμοποιήσετε τις ρητές embedding features.
Μπορώ να ελέγξω τη συμπεριφορά υποκατάστασης όταν μια προσαρμοσμένη γραμματοσειρά λείπουν ορισμένα γλύφικα;
Ναι. Διαμορφώστε την font substitution, τους replacement rules και τα fallback sets για να καθορίσετε ακριβώς ποια γραμματοσειρά θα χρησιμοποιηθεί όταν λείπει το ζητούμενο γλύφιο.
Μπορώ να χρησιμοποιήσω γραμματοσειρές σε κοντέινερ Linux/Docker χωρίς να τις εγκαταστήσω παγκοσμίως;
Ναι. Δείξτε στους δικούς σας φακέλους γραμματοσειρών ή φορτώστε γραμματοσειρές από πίνακες byte. Αυτό αφαιρεί οποιαδήποτε εξάρτηση από τους καταλόγους γραμματοσειρών του συστήματος στην εικόνα του κοντέινερ.
Τι γίνεται με την άδεια χρήσης — μπορώ να ενσωματώσω οποιαδήποτε προσαρμοσμένη γραμματοσειρά χωρίς περιορισμούς;
Είστε υπεύθυνοι για τη συμμόρφωση με τις άδειες χρήσης των γραμματοσειρών. Οι όροι διαφέρουν· ορισμένες άδειες απαγορεύουν την ενσωμάτωση ή εμπορική χρήση. Πάντα ελέγχετε το EULA της γραμματοσειράς πριν διανείμετε τα αποτελέσματα.