Διαμόρφωση αντικατάστασης γραμματοσειράς σε παρουσιάσεις χρησιμοποιώντας Java
Επισκόπηση
Η αντικατάσταση γραμματοσειρών επιτρέπει στο Aspose.Slides να χρησιμοποιεί μια διαθέσιμη γραμματοσειρά αντί μιας γραμματοσειράς που δεν είναι προσβάσιμη όταν μια παρουσίαση αποδίδεται ή μετατρέπεται. Η αντικατάσταση επηρεάζει το παραγόμενο αποτέλεσμα· δεν αλλάζει τη γραμματοσειρά που έχει ανατεθεί στο περιεχόμενο της παρουσίασης.
Μπορείτε να ορίσετε τη γραμματοσειρά που θα χρησιμοποιείται όταν μια συγκεκριμένη γραμματοσειρά δεν είναι διαθέσιμη και μπορείτε να εξετάσετε τις αντικαταστάσεις που θα κάνει το Aspose.Slides κατά την απόδοση. Αυτό βοηθά στη διατήρηση της συνέπειας του αποτελέσματος μεταξύ περιβαλλόντων με διαφορετικές εγκατεστημένες γραμματοσειρές.
Αν μια γραμματοσειρά είναι διαθέσιμη αλλά δεν έχει ξεχωριστό έντονο στυλ, δείτε Διαχείριση γραμματοσειρών χωρίς ξεχωριστό έντονο στυλ. Το τμήμα αυτό εξηγεί πώς να ραστεριζήσετε το επηρεασμένο κείμενο κατά την εξαγωγή σε PDF και τις συνέπειες για την επιλογή κειμένου, την αναζήτηση και την κλιμάκωση.
Λήψη αντικαταστάσεων γραμματοσειρών
Χρησιμοποιήστε τη μέθοδο IFontsManager.getSubstitutions για να προσδιορίσετε ποιες γραμματοσειρές θα αντικατασταθούν όταν η παρουσίαση αποδίδεται. Η μέθοδος επιστρέφει αντικείμενα FontSubstitutionInfo που ταυτοποιούν τα αρχικά και τα αντικατεστημένα ονόματα γραμματοσειρών.
Το παρακάτω παράδειγμα Java παραθέτει όλες τις αντικαταστάσεις γραμματοσειρών για μια παρουσίαση:
import com.aspose.slides.FontSubstitutionInfo;
import com.aspose.slides.Presentation;
Presentation presentation = new Presentation("Presentation.pptx");
try {
for (FontSubstitutionInfo substitution : presentation.getFontsManager().getSubstitutions()) {
System.out.println(substitution.getOriginalFontName() + " -> " + substitution.getSubstitutedFontName());
}
} finally {
presentation.dispose();
}
Λήψη αντικαταστάσεων γραμματοσειρών για επιλεγμένες διαφάνειες
Χρησιμοποιήστε την υπερφόρτωση IFontsManager.getSubstitutions με όρισμα int[] slides για να εξετάσετε μόνο τις αντικαταστάσεις που απαιτούνται για την απόδοση συγκεκριμένων διαφανειών. Αυτό είναι χρήσιμο όταν αποδίδετε ή εξάγετε μέρος μιας παρουσίασης, ελέγχετε μια μεγάλη παρουσίαση σταδιακά, εντοπίζετε διαφάνειες που εξαρτώνται από μη διαθέσιμες γραμματοσειρές, προετοιμάζετε ένα ελάχιστο πακέτο γραμματοσειρών για διακομιστή ή κοντέινερ, ή διαγνώσατε διαφορές απόδοσης χωρίς την επεξεργασία άσχετων διαφανειών.
Ο πίνακας slides περιέχει δείκτες διαφανειών με βάση το 1: το 1 προσδιορίζει την πρώτη διαφάνεια. Αντιθέτως, ο προσπελάστης συλλογής Presentation.getSlides χρησιμοποιεί μηδενική αρίθμηση, έτσι ώστε η ίδια διαφάνεια να προσπελαστεί ως presentation.getSlides().get_Item(0). Λάβετε υπόψη αυτή τη διαφορά κατά τη δημιουργία του πίνακα για να αποφύγετε σφάλματα «off‑by‑one».
Κληθείτε την υπερφόρτωση μέσω της μεθόδου Presentation.getFontsManager . Επιστρέφει μόνο τις αντικαταστάσεις που καθορίστηκαν κατά την απόδοση των επιλεγμένων διαφανειών. Κάθε αποτέλεσμα είναι ένα αντικείμενο FontSubstitutionInfo που περιέχει τα αρχικά και τα αντικατεστημένα ονόματα γραμματοσειρών. Το αποτέλεσμα αντικατοπτρίζει το τρέχον περιβάλλον γραμματοσειρών, τους ρυθμισμένους κανόνες εφεδρείας και τις εξωτερικές γραμματοσειρές. Οι κανόνες αντικατάστασης που είναι αποθηκευμένοι σε ένα IFontSubstRuleCollection εφαρμόζονται όταν η παρουσίαση αποδίδεται, αλλά το αποτέλεσμα δεν τους εμφανίζει· ελέγξτε τις γραμματοσειρές στο αρχείο εξόδου.
Ο ίδιος κανόνας αντικατάστασης μπορεί να απαιτείται από περισσότερες από μία επιλεγμένες διαφάνειες. Απομακρύνετε τις διπλότυπες εγγραφές όταν δημιουργείτε απογραφή γραμματοσειρών ή αναφορά προελέγχου. Το παρακάτω παράδειγμα αναφέρει κάθε επιστρεφόμενη αντικατάσταση και στη συνέχεια δημιουργεί μια ταξινομημένη λίστα μοναδικών αντιστοιχίσεων γραμματοσειρών:
import com.aspose.slides.FontSubstitutionInfo;
import com.aspose.slides.Presentation;
import java.util.ArrayList;
import java.util.List;
import java.util.Set;
import java.util.TreeSet;
Presentation presentation = new Presentation("Presentation.pptx");
try {
int[] selectedSlides = { 1, 3, 5 };
List<FontSubstitutionInfo> substitutions = new ArrayList<>();
for (FontSubstitutionInfo substitution : presentation.getFontsManager().getSubstitutions(selectedSlides)) {
substitutions.add(substitution);
}
System.out.println("Substitutions for the selected slides:");
for (FontSubstitutionInfo substitution : substitutions) {
System.out.println(substitution.getOriginalFontName() + " -> " + substitution.getSubstitutedFontName());
}
Set<String> sortedPreflightEntries = new TreeSet<>(String.CASE_INSENSITIVE_ORDER);
for (FontSubstitutionInfo substitution : substitutions) {
String entry = substitution.getOriginalFontName() + " -> " + substitution.getSubstitutedFontName();
sortedPreflightEntries.add(entry);
}
System.out.println("Deduplicated font preflight report:");
for (String entry : sortedPreflightEntries) {
System.out.println(entry);
}
} finally {
presentation.dispose();
}
Το interface IFontsManager παρέχει και τις δύο υπερφορτώσεις. Επιλέξτε αυτή που ταιριάζει στο εύρος της λειτουργίας απόδοσης:
| Υπερφόρτωση | Χρησιμοποιήστε το όταν |
|---|---|
| getSubstitutions χωρίς παραμέτρους | Χρειάζεστε αντικαταστάσεις για ολόκληρη την παρουσίαση. |
getSubstitutions με int[] slides |
Χρειάζεστε αντικαταστάσεις για ένα επιλεγμένο εύρος, επαναληπτικό έλεγχο ή μερική εξαγωγή. |
Ορισμός κανόνων αντικατάστασης γραμματοσειρών
Για να καθορίσετε τη γραμματοσειρά που το Aspose.Slides πρέπει να χρησιμοποιεί όταν μια πηγαία γραμματοσειρά δεν είναι διαθέσιμη:
- Φορτώστε την παρουσίαση.
- Δημιουργήστε ορισμούς γραμματοσειρών για τις πηγαίες και τις αντικαταστάσιμες γραμματοσειρές.
- Δημιουργήστε έναν FontSubstRule με τη συνθήκη WhenInaccessible.
- Προσθέστε τον κανόνα σε μια FontSubstRuleCollection.
- Αναθέστε τη συλλογή χρησιμοποιώντας τη μέθοδο FontsManager.setFontSubstRuleList.
- Αποδώστε ή μετατρέψτε την παρουσίαση.
Το παρακάτω παράδειγμα Java αντικαθιστά το Arial με το SomeRareFont όταν το SomeRareFont δεν είναι διαθέσιμο, και στη συνέχεια αποδίδει την πρώτη διαφάνεια για να επαληθεύσει το αποτέλεσμα. Η αντικαταστάσιμη γραμματοσειρά πρέπει να είναι διαθέσιμη στο Aspose.Slides.
import com.aspose.slides.FontData;
import com.aspose.slides.FontSubstCondition;
import com.aspose.slides.FontSubstRule;
import com.aspose.slides.FontSubstRuleCollection;
import com.aspose.slides.IFontData;
import com.aspose.slides.IFontSubstRule;
import com.aspose.slides.IFontSubstRuleCollection;
import com.aspose.slides.IImage;
import com.aspose.slides.ImageFormat;
import com.aspose.slides.Presentation;
Presentation presentation = new Presentation("Fonts.pptx");
try {
IFontData sourceFont = new FontData("SomeRareFont");
IFontData substituteFont = new FontData("Arial");
IFontSubstRule substitutionRule = new FontSubstRule(sourceFont, substituteFont, FontSubstCondition.WhenInaccessible);
IFontSubstRuleCollection substitutionRules = new FontSubstRuleCollection();
substitutionRules.add(substitutionRule);
presentation.getFontsManager().setFontSubstRuleList(substitutionRules);
IImage image = presentation.getSlides().get_Item(0).getImage(1f, 1f);
try {
image.save("slide.jpg", ImageFormat.Jpeg);
} finally {
image.dispose();
}
} finally {
presentation.dispose();
}
Note
Για μια άνευ προϋπόθεσης αλλαγή στις γραμματοσειρές που χρησιμοποιούνται σε όλη την παρουσίαση, δείτε Αντικατάσταση γραμματοσειράς.Περιορισμοί για γραμματοσειρές μαθηματικών τύπων
Οι κανόνες αντικατάστασης γραμματοσειρών αποτελούν μέρος της τυπικής διαδικασίας επιλογής γραμματοσειρών που χρησιμοποιείται κατά την απόδοση και τη μετατροπή. Λειτουργούν για κανονικό κείμενο όταν το Aspose.Slides μπορεί να αντικαταστήσει μια μη προσβάσιμη γραμματοσειρά με τη διαθέσιμη γραμματοσειρά που καθορίζεται από έναν κανόνα.
Οι εξισώσεις Office Math έχουν πρόσθετη απαίτηση. Αν μια εξίσωση χρησιμοποιεί Cambria Math, το Aspose.Slides μπορεί να χρειάζεται ακριβώς αυτή τη γραμματοσειρά για να υπολογίσει και να αποδώσει τη διάταξη της εξίσωσης. Ένας κανόνας που αντικαθιστά άλλη μαθηματική γραμματοσειρά, όπως η STIX Two Math, δεν μπορεί να αντικαταστήσει την Cambria Math για αυτόν τον σκοπό, και η απόδοση μπορεί ακόμη να αναφέρει ότι απαιτείται η Cambria Math.
Για να αποδώσετε ή μετατρέψετε τέτοια παρουσίαση, κάντε τη Cambria Math διαθέσιμη στο Aspose.Slides. Εγκαταστήστε τη στο λειτουργικό σύστημα ή φορτώστε τη ως εξωτερική γραμματοσειρά.
Αυτός ο περιορισμός ισχύει για τη διάταξη των εξισώσεων. Οι κανόνες αντικατάστασης που περιγράφηκαν παραπάνω εξακολουθούν να ισχύουν για το κανονικό κείμενο της παρουσίασης.
Συχνές ερωτήσεις
Ποια είναι η διαφορά μεταξύ αντικατάστασης γραμματοσειράς και αντικατάστασης γραμματοσειράς;
Αντικατάσταση γραμματοσειράς αλλάζει εσκεμμένα μια γραμματοσειρά με άλλη σε όλη την παρουσίαση. Η αντικατάσταση γραμματοσειρών επιλέγει μια γραμματοσειρά για το παραγόμενο αποτέλεσμα όταν πληρούται η ρυθμισμένη συνθήκη, όπως όταν η αρχική γραμματοσειρά δεν είναι διαθέσιμη.
Πότε εφαρμόζονται οι κανόνες αντικατάστασης;
Οι κανόνες συμμετέχουν στη ακολουθία επιλογής γραμματοσειράς κατά την απόδοση και τη μετατροπή. Με το WhenInaccessible, ένας κανόνας χρησιμοποιείται μόνο όταν το Aspose.Slides δεν μπορεί να προσπελάσει τη πηγαία γραμματοσειρά.
Τι συμβαίνει όταν λείπει μια γραμματοσειρά και δεν έχει ρυθμιστεί κανένας κανόνας αντικατάστασης;
Το Aspose.Slides επιλέγει τη πιο κοντινή διαθέσιμη γραμματοσειρά σύμφωνα με τη διαδικασία επιλογής γραμματοσειρών. Το αποτέλεσμα εξαρτάται από τις γραμματοσειρές που είναι διαθέσιμες στο περιβάλλον εκτέλεσης.
Μπορώ να φορτώσω εξωτερικές γραμματοσειρές για να αποφύγω την αντικατάσταση;
Ναι. Μπορείτε να φορτώσετε εξωτερικές γραμματοσειρές ώστε το Aspose.Slides να τις χρησιμοποιεί κατά την απόδοση και τη μετατροπή.
Διανέμει το Aspose γραμματοσειρές με τη βιβλιοθήκη;
Όχι. Είστε υπεύθυνοι για την παροχή των γραμματοσειρών και για τη συμμόρφωση με τις άδειές τους.
Μπορούν τα αποτελέσματα αντικατάστασης να διαφέρουν μεταξύ Windows, Linux και macOS;
Ναι. Οι εγκατεστημένες γραμματοσειρές και οι τοποθεσίες αναζήτησης γραμματοσειρών διαφέρουν ανά λειτουργικό σύστημα, οπότε μια γραμματοσειρά που είναι διαθέσιμη σε έναν υπολογιστή μπορεί να απαιτεί αντικατάσταση σε άλλον.
Πώς μπορώ να διασφαλίσω τη σταθερότητα της επιλογής γραμματοσειράς σε μαζικές μετατροπές;
Χρησιμοποιήστε τα ίδια αρχεία γραμματοσειρών και τις ίδιες εκδόσεις σε κάθε μηχάνημα ή κοντέινερ, φορτώστε τις απαιτούμενες εξωτερικές γραμματοσειρές, και ενσωματώστε γραμματοσειρές όταν η άδεια το επιτρέπει. Μπορείτε επίσης να καλέσετε το IFontsManager.getSubstitutions πριν από την εξαγωγή για να εντοπίσετε ανεπιθύμητες αντικαταστάσεις.