Hur man formaterar text i Java

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 frame

En 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

Se även

 Svenska