Sådan formateres tekst i Java

Sådan formateres tekst i Java

Aspose.Slides FOSS for Java leverer finjusteret tekstformatering via PortionFormat-klassen. En Portion er den mindste uafhængige tekstenhed; den svarer til en enkelt formateringssekvens inden for et afsnit. Denne vejledning viser, hvordan man anvender fed, kursiv, skriftstørrelse og farveformatering på tekst i en præsentation.

Trin-for-trin guide

Trin 1: Tilføj Maven-afhængigheden

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

Trin 2: Tilføj en form med et tekstfelt

Før du formaterer tekst, skal en form indeholde en TextFrame. Brug shape.addTextFrame() til at oprette 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);
}

Trin 3: Få adgang til TextFrame

shape.addTextFrame() returnerer TextFrame-objektet. Du kan også hente det senere via shape.getTextFrame().

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

En TextFrame indeholder en liste over Paragraph objekter (tf.getParagraphs()). Hvert Paragraph indeholder Portion objekter (paragraph.getPortions()).


Trin 4: Anvend fed og kursiv formatering

Brug portionFormat.setFontBold() og portionFormat.setFontItalic(). Disse metoder accepterer NullableBool.TRUE, NullableBool.FALSE eller NullableBool.NOT_DEFINED (arver fra 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);
}

Trin 5: Indstil skriftstørrelse og farve

Indstil portionFormat.setFontHeight() for størrelse (i punkter) og brug getFillFormat() til farve.

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) accepterer værdier 0-255 for hver kanal.


Trin 6: Flere dele i ét afsnit

Et enkelt afsnit kan indeholde flere dele med forskellig formatering. Tilføj en ny Portion til et afsnits 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);
}

Almindelige problemer og rettelser

Tekst vises sort, selv efter at farven er indstillet

Sørg for, at getFillFormat().setFillType(FillType.SOLID) kaldes før farven tildeles. Uden at indstille udfyldningstypen kan farveændringen muligvis ikke have nogen effekt.

NullableBool.TRUE vs true

portionFormat.setFontBold() forventer NullableBool.TRUE, ikke Javas true. At videregive en boolean vil forårsage en kompileringsfejl, da metoden forventer NullableBool-enum’en.

Skrift vises ikke i den gemte fil

setLatinFont()‑metoden indstiller den latinske skrifttypefamilie. Hvis den ikke er indstillet, bruges præsentationstemaets skrifttype. Tilpassede skrifttyper skal indlejres eller være tilgængelige på visningsmaskinen.


Ofte stillede spørgsmål

Hvordan ændrer jeg skrifttypefamilien?

Sæt portionFormat.setLatinFont():

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

FontData accepterer skrifttypefamilienavnet som en streng.

Hvordan indstiller jeg afsnitsjustering?

Brug paragraphFormat.setAlignment():

import org.aspose.slides.foss.TextAlignment;

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

Understøttede værdier: LEFT, CENTER, RIGHT, JUSTIFY.

Hvordan indstiller jeg linjeafstand?

Brug paragraphFormat.setSpaceBefore() (punkter før afsnit) eller paragraphFormat.setSpaceAfter() (punkter efter afsnit):

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

Se også

 Dansk