Как да форматирате текст в Java

Как да форматирате текст в Java

Aspose.Slides FOSS for Java provides fine-grained text formatting through the PortionFormat клас. A Portion е най-малката независима единица текст; тя съответства на един единствен форматен участък в рамките на абзац. Това ръководство показва как да приложите удебеляване, курсив, размер на шрифта и цветово форматиране към текста в презентация.

Ръководство стъпка по стъпка

Стъпка 1: Добавете Maven зависимостта

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

Стъпка 2: Добавете форма с текстова рамка

Преди да форматирате текста, shape трябва да съдържа TextFrame. Използвайте shape.addTextFrame() за да създадете такъв.

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

Стъпка 3: Достъп до TextFrame

shape.addTextFrame() връща TextFrame обект. Можете също да го извлечете по-късно чрез shape.getTextFrame().

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

A TextFrame съдържа списък от Paragraph обекти (tf.getParagraphs()) Paragraph съдържа Portion обекти (paragraph.getPortions()).


Стъпка 4: Прилагане на удебеляване и курсив

Използвайте portionFormat.setFontBold() и portionFormat.setFontItalic(). Тези методи приемат NullableBool.TRUE, NullableBool.FALSE, или NullableBool.NOT_DEFINED (наследява се от 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);
}

Стъпка 5: Задаване на размер на шрифта и цвят

Задайте portionFormat.setFontHeight() за размер (в точки) и използвайте getFillFormat() за цвят.

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) приема стойности 0-255 за всеки канал.


Стъпка 6: Множество части в един абзац

Един абзац може да съдържа множество части с различно форматиране. Добавете нов Portion към абзац’s getPortions() колекция:

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

Чести проблеми и решения

Текстът остава черен, дори след задаване на цвят

Уверете се getFillFormat().setFillType(FillType.SOLID) се извиква преди задаване на цвета. Без задаване на типа запълване, промяната на цвета може да няма ефект.

NullableBool.TRUE против true

portionFormat.setFontBold() очаква NullableBool.TRUE, а не Java’s true. Предаване на булева стойност ще предизвика грешка при компилация, тъй като методът очаква NullableBool enum.

Шрифтът не се появява в запазения файл

Този setLatinFont() методът задава латинското семейство шрифтове. Ако не е зададено, се използва шрифтът от темата на презентацията. Персонализираните шрифтове трябва да бъдат вградени или налични на машината за преглед.


Често задавани въпроси

Как да променя семейството на шрифта?

Задай portionFormat.setLatinFont():

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

FontData приема името на семейството шрифтове като низ.

Как да зададете подравняване на абзац?

Използвай paragraphFormat.setAlignment():

import org.aspose.slides.foss.TextAlignment;

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

Поддържани стойности: LEFT, CENTER, RIGHT, JUSTIFY.

Как да зададете междуредово разстояние?

Използвай paragraphFormat.setSpaceBefore() (точки преди абзац) или paragraphFormat.setSpaceAfter() (точки след абзац):

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

Вижте също

 Български