Come formattare il testo in Java
Aspose.Slides FOSS for Java provides fine-grained text formatting through the PortionFormat classe. A Portion è l’unità indipendente più piccola di testo; corrisponde a un singolo intervallo di formattazione all’interno di un paragrafo. Questa guida mostra come applicare la formattazione grassetto, corsivo, dimensione del carattere e colore al testo in una presentazione.
Guida passo-passo
Passo 1: Aggiungi la dipendenza Maven
<dependency>
<groupId>org.aspose.slides.foss</groupId>
<artifactId>aspose-slides-foss</artifactId>
<version>1.0.0</version>
</dependency>Passo 2: Aggiungi una forma con un riquadro di testo
Prima di formattare il testo, una forma deve contenere un TextFrame. Usa shape.addTextFrame() per crearne uno.
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);
}Passo 3: Accedi al TextFrame
shape.addTextFrame() restituisce il TextFrame oggetto. Puoi anche recuperarlo più tardi tramite shape.getTextFrame().
ITextFrame tf = shape.getTextFrame(); // if the frame already exists
ITextFrame tf = shape.addTextFrame(""); // creates a new frameUna TextFrame contiene un elenco di Paragraph oggetti (tf.getParagraphs()). Ogni Paragraph contiene Portion oggetti (paragraph.getPortions()).
Passo 4: Applica la formattazione in grassetto e corsivo
Usa portionFormat.setFontBold() e portionFormat.setFontItalic(). Questi metodi accettano NullableBool.TRUE, NullableBool.FALSE, o NullableBool.NOT_DEFINED (eredita da 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);
}Passo 5: Imposta la dimensione del carattere e il colore
Imposta portionFormat.setFontHeight() per dimensione (in punti) e usa getFillFormat() per il colore.
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) accetta valori da 0 a 255 per ogni canale.
Passo 6: Più porzioni in un singolo paragrafo
Un singolo paragrafo può contenere più parti con formattazioni diverse. Aggiungi un nuovo Portion a un paragrafo getPortions() collezione:
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);
}Problemi comuni e soluzioni
Il testo appare nero anche dopo aver impostato il colore
Assicurati getFillFormat().setFillType(FillType.SOLID) viene chiamato prima di assegnare il colore. Senza impostare il tipo di riempimento, la modifica del colore potrebbe non avere effetto.
NullableBool.TRUE vs true
portionFormat.setFontBold() si aspetta NullableBool.TRUE, non Java’s true. Passare un booleano causerà un errore di compilazione poiché il metodo si aspetta il NullableBool enum.
Il font non appare nel file salvato
Il setLatinFont() metodo imposta la famiglia di caratteri Latin. Se non impostata, viene utilizzato il carattere del tema della presentazione. I caratteri personalizzati devono essere incorporati o disponibili sulla macchina di visualizzazione.
Domande frequenti
Come faccio a cambiare la famiglia di font?
Imposta portionFormat.setLatinFont():
fmt.setLatinFont(new FontData("Arial"));FontData accetta il nome della famiglia di caratteri come stringa.
Come impostare l’allineamento del paragrafo?
Usa paragraphFormat.setAlignment():
import org.aspose.slides.foss.TextAlignment;
tf.getParagraphs().get(0).getParagraphFormat()
.setAlignment(TextAlignment.CENTER);Valori supportati: LEFT, CENTER, RIGHT, JUSTIFY.
Come impostare l’interlinea?
Usa paragraphFormat.setSpaceBefore() (punti prima del paragrafo) o paragraphFormat.setSpaceAfter() (punti dopo il paragrafo):
tf.getParagraphs().get(0).getParagraphFormat().setSpaceBefore(12); // 12pt before
tf.getParagraphs().get(0).getParagraphFormat().setSpaceAfter(6); // 6pt after