Kaip formatuoti tekstą Java

Kaip formatuoti tekstą Java

Aspose.Slides FOSS for Java suteikia smulkią teksto formatavimą per PortionFormat klasę. Portion yra mažiausia nepriklausoma teksto vienetas; jis atitinka vieną formatavimo seką pastraipoje. Šiame vadove parodyta, kaip pritaikyti pusjuodį, kursyvą, šrifto dydį ir spalvos formatavimą tekstui pristatyme.

Žingsnis po žingsnio vadovas

Žingsnis 1: Pridėkite Maven priklausomybę

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

Žingsnis 2: Pridėkite formą su teksto rėmeliu

Prieš formatuojant tekstą, forma turi turėti TextFrame. Naudokite shape.addTextFrame(), kad sukurtumėte ją.

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

Žingsnis 3: Pasiekti TextFrame

shape.addTextFrame() grąžina TextFrame objektą. Jį taip pat galite gauti vėliau per shape.getTextFrame().

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

TextFrame turi sąrašą Paragraph objektų (tf.getParagraphs()). Kiekvienas Paragraph turi Portion objektų (paragraph.getPortions()).


Žingsnis 4: taikyti pusjuodį ir kursyvinį formatavimą

Naudokite portionFormat.setFontBold() ir portionFormat.setFontItalic(). Šie metodai priima NullableBool.TRUE, NullableBool.FALSE arba NullableBool.NOT_DEFINED (paveldima iš pagrindinio).

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

Žingsnis 5: Nustatykite šrifto dydį ir spalvą

Nustatykite portionFormat.setFontHeight() dydžiui (taškeliais) ir naudokite getFillFormat() spalvai.

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) priima reikšmes 0‑255 kiekvienam kanalui.


Žingsnis 6: Kelios dalys viename pastraipoje

Vienas pastraipa gali turėti kelias dalis su skirtingu formatavimu. Pridėkite naują Portion į pastraipos getPortions() kolekciją:

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

Dažnos problemos ir sprendimai

Tekstas rodomas juodai net po spalvos nustatymo

Įsitikinkite, kad getFillFormat().setFillType(FillType.SOLID) būtų iškviestas prieš priskiriant spalvą. Nesukonfigūruojus užpildymo tipo, spalvos pakeitimas gali neturėti jokio poveikio.

NullableBool.TRUE prieš true

portionFormat.setFontBold() tikisi NullableBool.TRUE, o ne Java true. Boolean tipo perdavimas sukels kompiliavimo klaidą, nes metodas tikisi NullableBool enum.

Šriftas neatsiranda išsaugotame faile

setLatinFont() metodas nustato lotynų šriftų šeimą. Jei nenustatyta, naudojamas pristatymo temos šriftas. Pasirinktiniai šriftai turi būti įterpti arba prieinami peržiūros įrenginyje.


Dažnai užduodami klausimai

Kaip pakeisti šrifto šeimą?

Nustatyti portionFormat.setLatinFont():

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

FontData priima šrifto šeimos pavadinimą kaip eilutę.

Kaip nustatyti pastraipos lygiavimą?

Naudokite paragraphFormat.setAlignment():

import org.aspose.slides.foss.TextAlignment;

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

Palaikomos reikšmės: LEFT, CENTER, RIGHT, JUSTIFY.

Kaip nustatyti eilučių tarpą?

Naudokite paragraphFormat.setSpaceBefore() (taškai prieš pastraipą) arba paragraphFormat.setSpaceAfter() (taškai po pastraipos):

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

Žr. taip pat

 Lietuvių