Jak formátovat text v Javě

Jak formátovat text v Javě

Aspose.Slides FOSS for Java poskytuje jemné formátování textu prostřednictvím třídy PortionFormat. Portion je nejmenší nezávislá jednotka textu; mapuje se na jeden formátovací běh v odstavci. Tento průvodce ukazuje, jak aplikovat tučné, kurzívní, velikost písma a barevné formátování na text v prezentaci.

Krok za krokem průvodce

Krok 1: Přidejte Maven závislost

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

Krok 2: Přidat tvar s textovým rámečkem

Před formátováním textu musí tvar obsahovat TextFrame. Použijte shape.addTextFrame() k vytvoření jednoho.

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

Krok 3: Přístup k TextFrame

shape.addTextFrame() vrací objekt TextFrame. Můžete jej také později získat pomocí shape.getTextFrame().

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

TextFrame obsahuje seznam Paragraph objektů (tf.getParagraphs()). Každý Paragraph obsahuje Portion objektů (paragraph.getPortions()).


Krok 4: Použít tučné a kurzívní formátování

Použijte portionFormat.setFontBold() a portionFormat.setFontItalic(). Tyto metody přijímají NullableBool.TRUE, NullableBool.FALSE nebo NullableBool.NOT_DEFINED (zděděno z 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);
}

Krok 5: Nastavte velikost písma a barvu

Nastavte portionFormat.setFontHeight() pro velikost (v bodech) a použijte getFillFormat() pro barvu.

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) přijímá hodnoty 0-255 pro každý kanál.


Krok 6: Více částí v jednom odstavci

Jeden odstavec může obsahovat více částí s různým formátováním. Přidejte nový Portion do kolekce getPortions() odstavce:

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

Časté problémy a opravy

Text se zobrazuje černě i po nastavení barvy

Ujistěte se, že getFillFormat().setFillType(FillType.SOLID) je voláno před přiřazením barvy. Bez nastavení typu výplně může změna barvy nemít žádný efekt.

NullableBool.TRUE vs true

portionFormat.setFontBold() očekává NullableBool.TRUE, nikoli Java true. Předání booleanu způsobí chybu při kompilaci, protože metoda očekává výčtový typ NullableBool.

Písmo se v uloženém souboru neobjevuje

Metoda setLatinFont() nastavuje latinskou rodinu fontů. Pokud není nastavena, použije se písmo motivu prezentace. Vlastní fonty musí být vloženy nebo dostupné na zobrazovacím počítači.


Často kladené otázky

Jak změním rodinu písma?

Nastavit portionFormat.setLatinFont():

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

FontData přijímá název rodiny písma jako řetězec.

Jak nastavit zarovnání odstavce?

Použijte paragraphFormat.setAlignment():

import org.aspose.slides.foss.TextAlignment;

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

Podporované hodnoty: LEFT, CENTER, RIGHT, JUSTIFY.

Jak nastavit řádkování?

Použijte paragraphFormat.setSpaceBefore() (body před odstavcem) nebo paragraphFormat.setSpaceAfter() (body po odstavci):

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

Viz také

 Čeština