Hur man formaterar text i Java

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 frame

En 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

Se även

 Svenska