Kako formatirati tekst u Javi

Kako formatirati tekst u Javi

Aspose.Slides FOSS for Java pruža detaljno formatiranje teksta putem klase PortionFormat. Portion je najmanja nezavisna jedinica teksta; ona odgovara jednom formatu unutar pasusa. Ovaj vodič pokazuje kako primeniti podebljano, kurziv, veličinu fonta i boju formatiranja na tekst u prezentaciji.

Vodič korak po korak

Korak 1: Dodajte Maven zavisnost

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

Korak 2: Dodajte oblik sa tekstualnim okvirom

Pre formatiranja teksta, oblik mora da sadrži TextFrame. Koristite shape.addTextFrame() da biste ga kreirali.

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: Pristup TextFrame-u

shape.addTextFrame() vraća TextFrame objekat. Takođe ga možete preuzeti kasnije putem shape.getTextFrame().

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

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


Korak 4: Primeni podebljano i kurzivno formatiranje

Koristite portionFormat.setFontBold() i portionFormat.setFontItalic(). Ove metode prihvataju NullableBool.TRUE, NullableBool.FALSE ili NullableBool.NOT_DEFINED (nasleđuju 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

Postavite portionFormat.setFontHeight() za veličinu (u tačkama) i koristite 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) prihvata vrednosti 0‑255 za svaki kanal.


Korak 6: Više delova u jednom odlomku

Jedan odlomak može da sadrži više delova sa različitim formatiranjem. Dodajte novi Portion u kolekciju getPortions() odlomka:

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 popravke

Tekst se pojavljuje crno iako je boja postavljena

Osigurajte da se getFillFormat().setFillType(FillType.SOLID) pozove pre dodele boje. Bez postavljanja tipa popunjavanja, promena boje možda neće imati efekta.

NullableBool.TRUE vs true

portionFormat.setFontBold() očekuje NullableBool.TRUE, a ne Java‑ov true. Prosleđivanje boolean vrednosti će izazvati grešku pri kompajliranju jer metoda očekuje enum NullableBool.

Font se ne pojavljuje u sačuvanoj datoteci

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


Često postavljana pitanja

Kako da promenim porodicu fonta?

Postavi portionFormat.setLatinFont():

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

FontData prihvata naziv porodice fonta kao string.

Kako postaviti poravnanje pasusa?

Koristite paragraphFormat.setAlignment():

import org.aspose.slides.foss.TextAlignment;

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

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

Kako da podesim razmak između redova?

Koristite paragraphFormat.setSpaceBefore() (tačke pre pasusa) ili paragraphFormat.setSpaceAfter() (tačke posle pasusa):

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

Види такође

 Српски