Πώς να μορφοποιήσετε κείμενο σε Java
Το Aspose.Slides FOSS for Java παρέχει λεπτομερή μορφοποίηση κειμένου μέσω της κλάσης PortionFormat. Ένα Portion είναι η μικρότερη ανεξάρτητη μονάδα κειμένου· αντιστοιχεί σε μία ενιαία εκτέλεση μορφοποίησης μέσα σε μια παράγραφο. Αυτός ο οδηγός δείχνει πώς να εφαρμόσετε τη μορφοποίηση έντονου, πλάγιου, μεγέθους γραμματοσειράς και χρώματος στο κείμενο μιας παρουσίασης.
Οδηγός βήμα-βήμα
Βήμα 1: Προσθέστε την εξάρτηση Maven
<dependency>
<groupId>org.aspose.slides.foss</groupId>
<artifactId>aspose-slides-foss</artifactId>
<version>1.0.0</version>
</dependency>Βήμα 2: Προσθήκη Σχήματος με Πλαίσιο Κειμένου
Πριν μορφοποιήσετε το κείμενο, ένα σχήμα πρέπει να περιέχει ένα TextFrame. Χρησιμοποιήστε shape.addTextFrame() για να δημιουργήσετε ένα.
import org.aspose.slides.foss.Presentation;
import org.aspose.slides.foss.ISlide;
import org.aspose.slides.foss.IAutoShape;
import org.aspose.slides.foss.ITextFrame;
import org.aspose.slides.foss.IParagraph;
import org.aspose.slides.foss.IPortion;
import org.aspose.slides.foss.Portion;
import org.aspose.slides.foss.IPortionFormat;
import org.aspose.slides.foss.ShapeType;
import org.aspose.slides.foss.FillType;
import org.aspose.slides.foss.NullableBool;
import org.aspose.slides.foss.export.SaveFormat;
import org.aspose.slides.foss.drawing.Color;
try (Presentation prs = new Presentation()) {
ISlide slide = prs.getSlides().get(0);
IAutoShape shape = slide.getShapes().addAutoShape(
ShapeType.RECTANGLE, 50, 50, 500, 150
);
ITextFrame tf = shape.addTextFrame("Default text: will be formatted");
prs.save("output.pptx", SaveFormat.PPTX);
}Βήμα 3: Πρόσβαση στο TextFrame
shape.addTextFrame() επιστρέφει το αντικείμενο TextFrame. Μπορείτε επίσης να το ανακτήσετε αργότερα μέσω shape.getTextFrame().
ITextFrame tf = shape.getTextFrame(); // if the frame already exists
ITextFrame tf = shape.addTextFrame(""); // creates a new frameΈνα TextFrame περιέχει μια λίστα από Paragraph αντικείμενα (tf.getParagraphs()). Κάθε Paragraph περιέχει Portion αντικείμενα (paragraph.getPortions()).
Βήμα 4: Εφαρμόστε έντονη και πλάγια μορφοποίηση
Χρησιμοποιήστε portionFormat.setFontBold() και portionFormat.setFontItalic(). Αυτές οι μέθοδοι δέχονται NullableBool.TRUE, NullableBool.FALSE ή NullableBool.NOT_DEFINED (κληρονομούν από το master).
import org.aspose.slides.foss.Presentation;
import org.aspose.slides.foss.ISlide;
import org.aspose.slides.foss.IAutoShape;
import org.aspose.slides.foss.ITextFrame;
import org.aspose.slides.foss.IParagraph;
import org.aspose.slides.foss.IPortion;
import org.aspose.slides.foss.Portion;
import org.aspose.slides.foss.IPortionFormat;
import org.aspose.slides.foss.ShapeType;
import org.aspose.slides.foss.FillType;
import org.aspose.slides.foss.NullableBool;
import org.aspose.slides.foss.export.SaveFormat;
import org.aspose.slides.foss.drawing.Color;
try (Presentation prs = new Presentation()) {
ISlide slide = prs.getSlides().get(0);
IAutoShape shape = slide.getShapes().addAutoShape(
ShapeType.RECTANGLE, 50, 50, 500, 150
);
ITextFrame tf = shape.addTextFrame("Bold and italic text");
IPortionFormat fmt = tf.getParagraphs().get(0)
.getPortions().get(0).getPortionFormat();
fmt.setFontBold(NullableBool.TRUE);
fmt.setFontItalic(NullableBool.TRUE);
prs.save("bold-italic.pptx", SaveFormat.PPTX);
}Βήμα 5: Ορισμός μεγέθους γραμματοσειράς και χρώματος
Ορίστε portionFormat.setFontHeight() για το μέγεθος (σε σημεία) και χρησιμοποιήστε getFillFormat() για το χρώμα.
import org.aspose.slides.foss.Presentation;
import org.aspose.slides.foss.ISlide;
import org.aspose.slides.foss.IAutoShape;
import org.aspose.slides.foss.ITextFrame;
import org.aspose.slides.foss.IParagraph;
import org.aspose.slides.foss.IPortion;
import org.aspose.slides.foss.Portion;
import org.aspose.slides.foss.IPortionFormat;
import org.aspose.slides.foss.ShapeType;
import org.aspose.slides.foss.FillType;
import org.aspose.slides.foss.NullableBool;
import org.aspose.slides.foss.export.SaveFormat;
import org.aspose.slides.foss.drawing.Color;
try (Presentation prs = new Presentation()) {
ISlide slide = prs.getSlides().get(0);
IAutoShape shape = slide.getShapes().addAutoShape(
ShapeType.RECTANGLE, 50, 50, 500, 150
);
ITextFrame tf = shape.addTextFrame("Large corporate-blue heading");
IPortionFormat fmt = tf.getParagraphs().get(0)
.getPortions().get(0).getPortionFormat();
fmt.setFontHeight(32); // 32pt font
fmt.setFontBold(NullableBool.TRUE);
fmt.getFillFormat().setFillType(FillType.SOLID);
fmt.getFillFormat().getSolidFillColor().setColor(
Color.fromArgb(255, 0, 70, 127)
);
prs.save("colored-text.pptx", SaveFormat.PPTX);
}Color.fromArgb(alpha, red, green, blue) δέχεται τιμές 0-255 για κάθε κανάλι.
Βήμα 6: Πολλαπλά τμήματα σε μία παράγραφο
Μία μόνο παράγραφος μπορεί να περιέχει πολλαπλά τμήματα με διαφορετική μορφοποίηση. Προσθέστε ένα νέο Portion στη συλλογή getPortions() μιας παραγράφου:
import org.aspose.slides.foss.Presentation;
import org.aspose.slides.foss.ISlide;
import org.aspose.slides.foss.IAutoShape;
import org.aspose.slides.foss.ITextFrame;
import org.aspose.slides.foss.IParagraph;
import org.aspose.slides.foss.IPortion;
import org.aspose.slides.foss.Portion;
import org.aspose.slides.foss.IPortionFormat;
import org.aspose.slides.foss.ShapeType;
import org.aspose.slides.foss.FillType;
import org.aspose.slides.foss.NullableBool;
import org.aspose.slides.foss.export.SaveFormat;
import org.aspose.slides.foss.drawing.Color;
try (Presentation prs = new Presentation()) {
ISlide slide = prs.getSlides().get(0);
IAutoShape shape = slide.getShapes().addAutoShape(
ShapeType.RECTANGLE, 50, 50, 600, 100
);
ITextFrame tf = shape.addTextFrame(""); // start with empty frame
IParagraph paragraph = tf.getParagraphs().get(0);
// First portion: normal text
IPortion portion1 = paragraph.getPortions().get(0);
portion1.setText("Normal text followed by ");
portion1.getPortionFormat().setFontHeight(20);
// Second portion: bold red text
Portion portion2 = new Portion("bold red text");
portion2.getPortionFormat().setFontHeight(20);
portion2.getPortionFormat().setFontBold(NullableBool.TRUE);
portion2.getPortionFormat().getFillFormat().setFillType(FillType.SOLID);
portion2.getPortionFormat().getFillFormat().getSolidFillColor().setColor(
Color.fromArgb(255, 200, 0, 0)
);
paragraph.getPortions().add(portion2);
prs.save("mixed-format.pptx", SaveFormat.PPTX);
}Κοινά προβλήματα και διορθώσεις
Το κείμενο εμφανίζεται μαύρο ακόμη και μετά τον ορισμό του χρώματος
Βεβαιωθείτε ότι το getFillFormat().setFillType(FillType.SOLID) καλείται πριν από την ανάθεση του χρώματος. Χωρίς ορισμό του τύπου γεμίσματος, η αλλαγή χρώματος μπορεί να μην έχει αποτέλεσμα.
NullableBool.TRUE εναντίον true
portionFormat.setFontBold() αναμένει NullableBool.TRUE, όχι το true της Java. Η μεταβίβαση ενός boolean θα προκαλέσει σφάλμα μεταγλώττισης, επειδή η μέθοδος αναμένει το enum NullableBool.
Η γραμματοσειρά δεν εμφανίζεται στο αποθηκευμένο αρχείο
Η μέθοδος setLatinFont() ορίζει την οικογένεια γραμματοσειρών Latin. Εάν δεν οριστεί, χρησιμοποιείται η γραμματοσειρά του θέματος παρουσίασης. Οι προσαρμοσμένες γραμματοσειρές πρέπει να είναι ενσωματωμένες ή διαθέσιμες στο μηχάνημα προβολής.
Συχνές Ερωτήσεις
Πώς αλλάζω την οικογένεια γραμματοσειράς;
Σύνολο portionFormat.setLatinFont():
fmt.setLatinFont(new FontData("Arial"));FontData δέχεται το όνομα οικογένειας γραμματοσειράς ως συμβολοσειρά.
Πώς μπορώ να ορίσω την ευθυγράμμιση παραγράφου;
Χρησιμοποιήστε paragraphFormat.setAlignment():
import org.aspose.slides.foss.TextAlignment;
tf.getParagraphs().get(0).getParagraphFormat()
.setAlignment(TextAlignment.CENTER);Υποστηριζόμενες τιμές: LEFT, CENTER, RIGHT, JUSTIFY.
Πώς μπορώ να ορίσω το διάστημα γραμμής;
Χρησιμοποιήστε paragraphFormat.setSpaceBefore() (σημεία πριν από την παράγραφο) ή paragraphFormat.setSpaceAfter() (σημεία μετά την παράγραφο):
tf.getParagraphs().get(0).getParagraphFormat().setSpaceBefore(12); // 12pt before
tf.getParagraphs().get(0).getParagraphFormat().setSpaceAfter(6); // 6pt after