Kā formatēt tekstu Java valodā

Kā formatēt tekstu Java valodā

Aspose.Slides FOSS for Java nodrošina smalku teksta formatēšanu, izmantojot PortionFormat klasi. Portion ir mazākā neatkarīgā teksta vienība; tā atbilst vienam formatēšanas posmam rindkopā. Šis ceļvedis parāda, kā prezentācijā uzlikt treknrakstu, slīprakstu, fonta lielumu un krāsas formatēšanu tekstam.

Solī pa solim ceļvedis

1. solis: Pievienojiet Maven atkarību

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

2. solis: Pievienot formu ar teksta rāmju

Pirms teksta formatēšanas formai jābūt TextFrame. Izmantojiet shape.addTextFrame(), lai izveidotu to.

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. solis: Piekļūt TextFrame

shape.addTextFrame() atgriež TextFrame objektu. To var arī izgūt vēlāk, izmantojot shape.getTextFrame().

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

TextFrame satur sarakstu ar Paragraph objektiem (tf.getParagraphs()). Katrs Paragraph satur Portion objektus (paragraph.getPortions()).


4. solis: Pielietot treknraksta un slīpraksta formatēšanu

Izmantojiet portionFormat.setFontBold() un portionFormat.setFontItalic(). Šīs metodes pieņem NullableBool.TRUE, NullableBool.FALSE vai NullableBool.NOT_DEFINED (manto no galvenā).

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. solis: iestatīt fonta lielumu un krāsu

Iestatiet portionFormat.setFontHeight() izmēram (punktos) un izmantojiet getFillFormat() krāsai.

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) pieņem vērtības 0‑255 katram kanālam.


6. solis: Vairākas daļas vienā rindkopā

Viena rindkopa var saturēt vairākas daļas ar atšķirīgu formatējumu. Pievienojiet jaunu Portion rindkopas getPortions() kolekcijai:

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

Vispārējās problēmas un risinājumi

Teksts parādās melns, pat pēc krāsas iestatīšanas

Pārliecinieties, ka getFillFormat().setFillType(FillType.SOLID) tiek izsaukts pirms krāsas piešķiršanas. Bez aizpildījuma tipa iestatīšanas krāsas maiņa var nebūt ietekmīga.

NullableBool.TRUE pret true

portionFormat.setFontBold() gaida NullableBool.TRUE, nevis Java true. Booleana pārsūtīšana radīs kompilācijas kļūdu, jo metode gaida NullableBool enumerāciju.

Fonts neparādās saglabātajā failā

setLatinFont() metode iestata latīņu fontu ģimeni. Ja nav iestatīta, tiek izmantots prezentācijas tēmas fonts. Pielāgotie fonti jāiekļauj vai jābūt pieejamiem skatīšanas datorā.


Biežāk uzdotie jautājumi

Kā es varu mainīt fonta ģimeni?

Iestatīt portionFormat.setLatinFont():

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

FontData pieņem fonta ģimenes nosaukumu kā virkni.

Kā iestatīt rindkopas izlīdzinājumu?

Izmantojiet paragraphFormat.setAlignment():

import org.aspose.slides.foss.TextAlignment;

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

Atbalstītās vērtības: LEFT, CENTER, RIGHT, JUSTIFY.

Kā iestatīt rindas atstarpi?

Izmantojiet paragraphFormat.setSpaceBefore() (punkti pirms rindkopas) vai paragraphFormat.setSpaceAfter() (punkti pēc rindkopas):

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

Skatīt arī

 Latviešu