Wie man Text in Java formatiert

Wie man Text in Java formatiert

Aspose.Slides FOSS for Java provides fine-grained text formatting through the PortionFormat Klasse. A Portion ist die kleinste unabhängige Texteinheit; sie entspricht einem einzelnen Formatierungslauf innerhalb eines Absatzes. Dieser Leitfaden zeigt, wie man Fett, Kursiv, Schriftgröße und Farbformatierung auf Text in einer Präsentation anwendet.

Schritt-für-Schritt-Anleitung

Schritt 1: Maven‑Abhängigkeit hinzufügen

<dependency>
  <groupId>org.aspose.slides.foss</groupId>
  <artifactId>aspose-slides-foss</artifactId>
  <version>1.0.0</version>
</dependency>

Schritt 2: Ein Shape mit einem Text Frame hinzufügen

Bevor Text formatiert wird, muss eine Form ein(e) TextFrame. Verwenden Sie shape.addTextFrame() um eine zu erstellen.

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);
}

Schritt 3: Auf das TextFrame zugreifen

shape.addTextFrame() gibt das TextFrame Objekt. Sie können es später auch über shape.getTextFrame().

ITextFrame tf = shape.getTextFrame();          // if the frame already exists
ITextFrame tf = shape.addTextFrame("");        // creates a new frame

Ein TextFrame enthält eine Liste von Paragraph Objekten (tf.getParagraphs()). Jeder Paragraph enthält Portion Objekte (paragraph.getPortions()).


Schritt 4: Fett- und Kursivformatierung anwenden

Verwenden portionFormat.setFontBold() und portionFormat.setFontItalic(). Diese Methoden akzeptieren NullableBool.TRUE, NullableBool.FALSE, oder NullableBool.NOT_DEFINED (erben vom 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);
}

Schritt 5: Schriftgröße und Farbe festlegen

Setzen portionFormat.setFontHeight() für die Größe (in Punkten) und verwenden getFillFormat() für die Farbe.

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) akzeptiert Werte 0-255 für jeden Kanal.


Schritt 6: Mehrere Portionen in einem Paragraph

Ein einzelner Absatz kann mehrere Abschnitte mit unterschiedlicher Formatierung enthalten. Fügen Sie ein neues Portion zu einem Absatz getPortions() Sammlung:

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);
}

Häufige Probleme und Lösungen

Der Text erscheint schwarz, selbst nach dem Festlegen der Farbe

Stellen Sie sicher getFillFormat().setFillType(FillType.SOLID) aufgerufen wird, bevor die Farbe zugewiesen wird. Ohne Festlegung des Fülltyps kann die Farbänderung keine Wirkung haben.

NullableBool.TRUE vs true

portionFormat.setFontBold() erwartet NullableBool.TRUE, nicht Java’s true. Das Übergeben eines Booleans führt zu einem Kompilierungsfehler, da die Methode das NullableBool Enum.

Schriftart erscheint nicht in der gespeicherten Datei

Der setLatinFont() Methode legt die lateinische Schriftfamilie fest. Wenn nicht festgelegt, wird die Schriftart des Präsentationsthemas verwendet. Benutzerdefinierte Schriften müssen eingebettet sein oder auf dem Anzeigegerät verfügbar sein.


Häufig gestellte Fragen

Wie ändere ich die Schriftfamilie?

Setzen portionFormat.setLatinFont():

fmt.setLatinFont(new FontData("Arial"));

FontData akzeptiert den Namen der Schriftfamilie als Zeichenkette.

Wie stelle ich die Absatzausrichtung ein?

Verwenden paragraphFormat.setAlignment():

import org.aspose.slides.foss.TextAlignment;

tf.getParagraphs().get(0).getParagraphFormat()
    .setAlignment(TextAlignment.CENTER);

Unterstützte Werte: LEFT, CENTER, RIGHT, JUSTIFY.

Wie stelle ich den Zeilenabstand ein?

Verwenden paragraphFormat.setSpaceBefore() (Punkte vor Absatz) oder paragraphFormat.setSpaceAfter() (Punkte nach Absatz):

tf.getParagraphs().get(0).getParagraphFormat().setSpaceBefore(12);  // 12pt before
tf.getParagraphs().get(0).getParagraphFormat().setSpaceAfter(6);    // 6pt after

Siehe auch

 Deutsch