Kako formatirati tekst u Java

Kako formatirati tekst u Java

Aspose.Slides FOSS for Java provides fine-grained text formatting through the PortionFormat klasa. A Portion je najmanja neovisna jedinica teksta; ona se mapira na jedan formatirajući niz unutar odlomka. Ovaj vodič pokazuje kako primijeniti podebljano, kurziv, veličinu fonta i boju formatiranja na tekst u prezentaciji.

Vodič korak po korak

Korak 1: Dodajte Maven ovisnost

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

Korak 2: Dodajte oblik s tekstualnim okvirom

Prije formatiranja teksta, oblik mora sadržavati TextFrame. Upotrijebite shape.addTextFrame() za stvaranje jednog.

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

Korak 3: Pristupite TextFrameu

shape.addTextFrame() vraća TextFrame objekt. Također ga možete dohvatiti kasnije putem shape.getTextFrame().

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

A TextFrame sadrži popis Paragraph objekata (tf.getParagraphs()). Svaki Paragraph sadrži Portion objekata (paragraph.getPortions()).


Korak 4: Primijenite podebljano i kurziv formatiranje

Upotrijebite portionFormat.setFontBold() i portionFormat.setFontItalic(). Ove metode prihvaćaju NullableBool.TRUE, NullableBool.FALSE, ili NullableBool.NOT_DEFINED (naslijedi od mastera).

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

Korak 5: Postavite veličinu fonta i boju

Postavi portionFormat.setFontHeight() za veličinu (u točkama) i upotrijebi getFillFormat() za boju.

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) prihvaća vrijednosti 0-255 za svaki kanal.


Korak 6: Više odjeljaka u jednom odlomku

Jedan odlomak može sadržavati više dijelova s različitim formatiranjem. Dodajte novi Portion u odlomakovu getPortions() kolekciju:

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

Uobičajeni problemi i rješenja

Tekst ostaje crn iako je boja postavljena

Osigurajte getFillFormat().setFillType(FillType.SOLID) se poziva prije dodjele boje. Bez postavljanja vrste ispune, promjena boje možda neće imati učinka.

NullableBool.TRUE vs true

portionFormat.setFontBold() očekuje NullableBool.TRUE, a ne Java’s true. Prosljeđivanje boolean vrijednosti uzrokovat će pogrešku pri kompilaciji jer metoda očekuje NullableBool enumeraciju.

Font se ne pojavljuje u spremljenoj datoteci

Metoda setLatinFont() metoda postavlja latinsku obitelj fontova. Ako nije postavljena, koristi se font teme prezentacije. Prilagođeni fontovi moraju biti ugrađeni ili dostupni na računalu za pregled.


Često postavljana pitanja

Kako promijeniti obitelj fonta?

Postavi portionFormat.setLatinFont():

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

FontData prihvaća naziv obitelji fonta kao string.

Kako postaviti poravnanje odlomka?

Koristite paragraphFormat.setAlignment():

import org.aspose.slides.foss.TextAlignment;

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

Podržane vrijednosti: LEFT, CENTER, RIGHT, JUSTIFY.

Kako postaviti razmak između redaka?

Koristite paragraphFormat.setSpaceBefore() (točke prije odlomka) ili paragraphFormat.setSpaceAfter() točke nakon odlomka:

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

Vidi također

 Hrvatski