Cara Memformat Teks dalam Java

Cara Memformat Teks dalam Java

Aspose.Slides FOSS for Java menyediakan pemformatan teks yang terperinci melalui kelas PortionFormat. Sebuah Portion adalah unit teks bebas terkecil; ia memetakan kepada satu rentetan pemformatan dalam perenggan. Panduan ini menunjukkan cara menerapkan pemformatan tebal, condong, saiz fon, dan warna pada teks dalam persembahan.

Panduan Langkah demi Langkah

Langkah 1: Tambahkan Kebergantungan Maven

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

Langkah 2: Tambah Bentuk dengan Bingkai Teks

Sebelum memformat teks, bentuk mesti mengandungi TextFrame. Gunakan shape.addTextFrame() untuk membuat satu.

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

Langkah 3: Akses TextFrame

shape.addTextFrame() mengembalikan objek TextFrame. Anda juga boleh mengambilnya kemudian melalui shape.getTextFrame().

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

Sebuah TextFrame mengandungi senarai objek Paragraph (tf.getParagraphs()). Setiap Paragraph mengandungi objek Portion (paragraph.getPortions()).


Langkah 4: Terapkan Pemformatan Tebal dan Condong

Gunakan portionFormat.setFontBold() dan portionFormat.setFontItalic(). Kaedah‑kaedah ini menerima NullableBool.TRUE, NullableBool.FALSE, atau NullableBool.NOT_DEFINED (warisi daripada 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);
}

Langkah 5: Tetapkan Saiz Fon dan Warna

Tetapkan portionFormat.setFontHeight() untuk saiz (dalam mata) dan gunakan getFillFormat() untuk warna.

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) menerima nilai 0-255 untuk setiap saluran.


Langkah 6: Pelbagai Bahagian dalam Satu Perenggan

Satu perenggan tunggal boleh mengandungi pelbagai bahagian dengan pemformatan yang berbeza. Tambah Portion baru ke dalam koleksi getPortions() perenggan:

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

Isu Umum dan Penyelesaian

Teks muncul hitam walaupun selepas menetapkan warna

Pastikan getFillFormat().setFillType(FillType.SOLID) dipanggil sebelum menetapkan warna. Tanpa menetapkan jenis isian, perubahan warna mungkin tidak berkesan.

NullableBool.TRUE vs true

portionFormat.setFontBold() mengharapkan NullableBool.TRUE, bukan true Java. Menyerahkan nilai boolean akan menyebabkan ralat kompilasi kerana kaedah mengharapkan enum NullableBool.

Fon tidak muncul dalam fail yang disimpan

Kaedah setLatinFont() menetapkan keluarga fon Latin. Jika tidak ditetapkan, fon tema persembahan akan digunakan. Fon tersuai mesti disematkan atau tersedia pada mesin penonton.


Soalan Lazim

Bagaimana saya menukar keluarga fon?

Tetapkan portionFormat.setLatinFont():

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

FontData menerima nama keluarga fon sebagai string.

Bagaimana saya menetapkan penjajaran perenggan?

Gunakan paragraphFormat.setAlignment():

import org.aspose.slides.foss.TextAlignment;

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

Nilai yang disokong: LEFT, CENTER, RIGHT, JUSTIFY.

Bagaimana saya menetapkan jarak baris?

Gunakan paragraphFormat.setSpaceBefore() (titik sebelum perenggan) atau paragraphFormat.setSpaceAfter() (titik selepas perenggan):

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

Lihat Juga

 Bahasa Melayu