Hur man formaterar text i Java
Aspose.Slides FOSS for Java provides fine-grained text formatting through the PortionFormat klass. En Portion är den minsta oberoende enheten av text; den motsvarar ett enda formateringsintervall inom ett stycke. Denna guide visar hur man applicerar fetstil, kursiv, teckenstorlek och färgformatering på text i en presentation.
Steg-för-steg-guide
Steg 1: Lägg till Maven‑beroendet
<dependency>
<groupId>org.aspose.slides.foss</groupId>
<artifactId>aspose-slides-foss</artifactId>
<version>1.0.0</version>
</dependency>Steg 2: Lägg till en form med en textram
Innan du formaterar text måste en form innehålla en TextFrame. Använd shape.addTextFrame() för att skapa en.
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);
}Steg 3: Åtkomst till TextFrame
shape.addTextFrame() returnerar TextFrame objektet. Du kan också hämta det senare via shape.getTextFrame().
ITextFrame tf = shape.getTextFrame(); // if the frame already exists
ITextFrame tf = shape.addTextFrame(""); // creates a new frameEn TextFrame innehåller en lista med Paragraph objekt (tf.getParagraphs()). Varje Paragraph innehåller Portion objekt (paragraph.getPortions()).
Steg 4: Applicera fetstil och kursiv formatering
Använd portionFormat.setFontBold() och portionFormat.setFontItalic(). Dessa metoder accepterar NullableBool.TRUE, NullableBool.FALSE, eller NullableBool.NOT_DEFINED (ärva från 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);
}Steg 5: Ställ in teckenstorlek och färg
Ställ in portionFormat.setFontHeight() för storlek (i punkter) och använd getFillFormat() för färg.
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) accepterar värden 0-255 för varje kanal.
Steg 6: Flera portioner i ett stycke
Ett enda stycke kan innehålla flera delar med olika formatering. Lägg till en ny Portion till ett stycke getPortions() samling:
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);
}Vanliga problem och lösningar
Texten visas svart även efter att färgen har ställts in
Säkerställ getFillFormat().setFillType(FillType.SOLID) kallas innan färgen tilldelas. Utan att ange fyllningstypen kan färgändringen sakna effekt.
NullableBool.TRUE vs true
portionFormat.setFontBold() förväntar sig NullableBool.TRUE, inte Javas true. Att skicka en boolesk värde kommer att orsaka ett kompileringsfel eftersom metoden förväntar sig NullableBool enum.
Typsnitt visas inte i den sparade filen
Den setLatinFont() metoden sätter den latinska teckensnittsfamiljen. Om den inte är angiven används presentationens temateckensnitt. Anpassade teckensnitt måste vara inbäddade eller tillgängliga på visningsmaskinen.
Vanliga frågor
Hur ändrar jag typsnittsfamiljen?
Ställ in portionFormat.setLatinFont():
fmt.setLatinFont(new FontData("Arial"));FontData accepterar teckensnittsfamiljens namn som en sträng.
Hur ställer jag in styckejustering?
Använd paragraphFormat.setAlignment():
import org.aspose.slides.foss.TextAlignment;
tf.getParagraphs().get(0).getParagraphFormat()
.setAlignment(TextAlignment.CENTER);Stödda värden: LEFT, CENTER, RIGHT, JUSTIFY.
Hur ställer jag in radavstånd?
Använd paragraphFormat.setSpaceBefore() (punkter före stycke) eller paragraphFormat.setSpaceAfter() (punkter efter stycke):
tf.getParagraphs().get(0).getParagraphFormat().setSpaceBefore(12); // 12pt before
tf.getParagraphs().get(0).getParagraphFormat().setSpaceAfter(6); // 6pt after