Hoe tekst opmaken in Java

Hoe tekst opmaken in Java

Aspose.Slides FOSS for Java biedt fijnmazige tekstopmaak via de PortionFormat-klasse. Een Portion is de kleinste onafhankelijke eenheid van tekst; het komt overeen met één opmaakrun binnen een alinea. Deze gids laat zien hoe u vet, cursief, lettergrootte en kleuropmaak op tekst in een presentatie kunt toepassen.

Stapsgewijze handleiding

Stap 1: Voeg de Maven-afhankelijkheid toe

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

Stap 2: Voeg een vorm met een tekstvak toe

Voordat u tekst opmaakt, moet een vorm een TextFrame bevatten. Gebruik shape.addTextFrame() om er een te maken.

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

Stap 3: Toegang tot het TextFrame

shape.addTextFrame() retourneert het TextFrame object. Je kunt het later ook ophalen via shape.getTextFrame().

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

Een TextFrame bevat een lijst met Paragraph objecten (tf.getParagraphs()). Elke Paragraph bevat Portion objecten (paragraph.getPortions()).


Stap 4: Vet- en cursiefopmaak toepassen

Gebruik portionFormat.setFontBold() en portionFormat.setFontItalic(). Deze methoden accepteren NullableBool.TRUE, NullableBool.FALSE of NullableBool.NOT_DEFINED (geërfd van 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);
}

Stap 5: Stel lettergrootte en kleur in

Stel portionFormat.setFontHeight() in voor grootte (in punten) en gebruik getFillFormat() voor kleur.

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) accepteert waarden 0-255 voor elk kanaal.


Stap 6: Meerdere delen in één alinea

Een enkele alinea kan meerdere delen met verschillende opmaak bevatten. Voeg een nieuwe Portion toe aan de getPortions()-collectie van een alinea:

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

Veelvoorkomende problemen en oplossingen

Tekst verschijnt zwart, zelfs na het instellen van kleur

Zorg ervoor dat getFillFormat().setFillType(FillType.SOLID) wordt aangeroepen voordat de kleur wordt toegewezen. Zonder het instellen van het vultype heeft de kleurverandering mogelijk geen effect.

NullableBool.TRUE vs true

portionFormat.setFontBold() verwacht NullableBool.TRUE, niet Java’s true. Het doorgeven van een boolean zal een compilatiefout veroorzaken omdat de methode de NullableBool enum verwacht.

Lettertype verschijnt niet in het opgeslagen bestand

De setLatinFont()-methode stelt de Latijnse lettertypefamilie in. Als deze niet is ingesteld, wordt het lettertype van het presentatiethema gebruikt. Aangepaste lettertypen moeten ingesloten zijn of beschikbaar op de weergavemachine.


Veelgestelde vragen

Hoe wijzig ik de lettertypefamilie?

Instellen portionFormat.setLatinFont():

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

FontData accepteert de naam van de lettertypefamilie als een string.

Hoe stel ik de alinea‑uitlijning in?

Gebruik paragraphFormat.setAlignment():

import org.aspose.slides.foss.TextAlignment;

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

Ondersteunde waarden: LEFT, CENTER, RIGHT, JUSTIFY.

Hoe stel ik de regelafstand in?

Gebruik paragraphFormat.setSpaceBefore() (punten vóór alinea) of paragraphFormat.setSpaceAfter() (punten na alinea):

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

Zie ook

 Nederlands