Hur man formaterar text i Java
Aspose.Slides FOSS for Java tillhandahåller finmaskig textformatering via PortionFormat-klassen. En Portion är den minsta oberoende enheten av text; den motsvarar ett enda formateringssegment 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 textruta
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: Få å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: Använd fetstil och kursiv formatering
Använd portionFormat.setFontBold() och portionFormat.setFontItalic(). Dessa metoder accepterar NullableBool.TRUE, NullableBool.FALSE eller NullableBool.NOT_DEFINED (ärver 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 delar i ett stycke
Ett stycke kan innehålla flera delar med olika formatering. Lägg till en ny Portion i styckets 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
Text visas svart även efter att färgen har ställts in
Se till att getFillFormat().setFillType(FillType.SOLID) anropas innan färgen tilldelas. Utan att ange fyllningstypen kan färgändringen ha ingen effekt.
NullableBool.TRUE vs true
portionFormat.setFontBold() förväntar sig NullableBool.TRUE, inte Javas true. Att skicka en boolean kommer att orsaka ett kompileringsfel eftersom metoden förväntar sig NullableBool‑enumen.
Typsnitt visas inte i den sparade filen
Metoden setLatinFont() anger den latinska teckensnittsfamiljen. Om den inte anges används presentationens temateckensnitt. Anpassade teckensnitt måste vara inbäddade eller tillgängliga på visningsdatorn.
Vanliga frågor
Hur ändrar jag teckensnittsfamiljen?
Sätt 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 stycket) eller paragraphFormat.setSpaceAfter() (punkter efter stycket):
tf.getParagraphs().get(0).getParagraphFormat().setSpaceBefore(12); // 12pt before
tf.getParagraphs().get(0).getParagraphFormat().setSpaceAfter(6); // 6pt after