Comment formater du texte en Java
Aspose.Slides FOSS for Java offre un formatage de texte granulaire grâce à la classe PortionFormat. Un Portion est la plus petite unité indépendante de texte ; il correspond à une seule séquence de formatage au sein d’un paragraphe. Ce guide montre comment appliquer le gras, l’italique, la taille de police et le formatage de couleur au texte d’une présentation.
Guide étape par étape
Étape 1 : Ajouter la dépendance Maven
<dependency>
<groupId>org.aspose.slides.foss</groupId>
<artifactId>aspose-slides-foss</artifactId>
<version>1.0.0</version>
</dependency>Étape 2 : Ajouter une forme avec un cadre de texte
Avant de formater le texte, une forme doit contenir un TextFrame. Utilisez shape.addTextFrame() pour en créer une.
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);
}Étape 3 : Accéder au TextFrame
shape.addTextFrame() renvoie l’objet TextFrame. Vous pouvez également le récupérer plus tard via shape.getTextFrame().
ITextFrame tf = shape.getTextFrame(); // if the frame already exists
ITextFrame tf = shape.addTextFrame(""); // creates a new frameUn TextFrame contient une liste d’objets Paragraph (tf.getParagraphs()). Chaque Paragraph contient des objets Portion (paragraph.getPortions()).
Étape 4 : Appliquer le format gras et italique
Utilisez portionFormat.setFontBold() et portionFormat.setFontItalic(). Ces méthodes acceptent NullableBool.TRUE, NullableBool.FALSE ou NullableBool.NOT_DEFINED (héritent du 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);
}Étape 5 : Définir la taille et la couleur de la police
Définissez portionFormat.setFontHeight() pour la taille (en points) et utilisez getFillFormat() pour la couleur.
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) accepte des valeurs de 0 à 255 pour chaque canal.
Étape 6 : Plusieurs parties dans un même paragraphe
Un seul paragraphe peut contenir plusieurs portions avec un formatage différent. Ajoutez un nouveau Portion à la collection getPortions() d’un paragraphe :
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);
}Problèmes courants et solutions
Le texte apparaît en noir même après avoir défini la couleur
Assurez-vous que getFillFormat().setFillType(FillType.SOLID) soit appelé avant d’attribuer la couleur. Sans définir le type de remplissage, le changement de couleur peut ne pas avoir d’effet.
NullableBool.TRUE vs true
portionFormat.setFontBold() attend NullableBool.TRUE, pas le true de Java. Passer un booléen provoquera une erreur de compilation puisque la méthode attend l’énumération NullableBool.
La police n’apparaît pas dans le fichier enregistré
La méthode setLatinFont() définit la famille de polices latines. Si elle n’est pas définie, la police du thème de la présentation est utilisée. Les polices personnalisées doivent être incorporées ou disponibles sur la machine de visualisation.
Foire aux questions
Comment changer la famille de police ?
Ensemble portionFormat.setLatinFont():
fmt.setLatinFont(new FontData("Arial"));FontData accepte le nom de la famille de polices sous forme de chaîne.
Comment définir l’alignement du paragraphe ?
Utilisez paragraphFormat.setAlignment():
import org.aspose.slides.foss.TextAlignment;
tf.getParagraphs().get(0).getParagraphFormat()
.setAlignment(TextAlignment.CENTER);Valeurs prises en charge : LEFT, CENTER, RIGHT, JUSTIFY.
Comment définir l’espacement des lignes ?
Utilisez paragraphFormat.setSpaceBefore() (points avant le paragraphe) ou paragraphFormat.setSpaceAfter() (points après le paragraphe) :
tf.getParagraphs().get(0).getParagraphFormat().setSpaceBefore(12); // 12pt before
tf.getParagraphs().get(0).getParagraphFormat().setSpaceAfter(6); // 6pt after