Kaip formatuoti tekstą Java

Kaip formatuoti tekstą Java

Aspose.Slides FOSS for Java provides fine-grained text formatting through the PortionFormat klasė. A Portion yra mažiausia nepriklausoma teksto vienetas; jis atitinka vieną formatavimo seką pastraipoje. Ši vadovas rodo, 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 a TextFrame. Naudokite shape.addTextFrame() sukurti vieną.

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: Pasiekite TextFrame

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

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

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


Žingsnis 4: Pridėkite pusjuodį ir kursyvo formatavimą

Naudokite portionFormat.setFontBold() ir portionFormat.setFontItalic(). Šie metodai priima NullableBool.TRUE, NullableBool.FALSE, arba NullableBool.NOT_DEFINED (paveldėti iš 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);
}

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

Nustatyti portionFormat.setFontHeight() dydžiui (taškais) ir naudoti 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: Keli Portion vienoje 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 lieka juodas net po spalvos nustatymo

Užtikrinkite getFillFormat().setFillType(FillType.SOLID) iškviečiamas prieš priskiriant spalvą. Jei nenustatomas užpildymo tipas, spalvos pakeitimas gali neturėti jokio poveikio.

NullableBool.TRUE prieš true

portionFormat.setFontBold() tikisi NullableBool.TRUE, ne Java’s true. Perduodant loginę reikšmę (boolean) kils kompiliacijos klaida, nes metodas tikisi NullableBool enum.

Šriftas neatsiranda įrašytame faile

Ši setLatinFont() method nustato lotynišką š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 šriftų šeimos pavadinimą kaip eilutę.

Kaip nustatyti pastraipos lygiavimą?

Naudoti 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ą?

Naudoti 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ų