Cara Memformat Teks dalam C++

Cara Memformat Teks dalam C++

Aspose.Slides FOSS for C++ provides fine-grained text formatting through the PortionFormat kelas. A Portion adalah unit teks independen terkecil; ia memetakan ke satu rangkaian pemformatan dalam sebuah paragraf. Panduan ini menunjukkan cara menerapkan pemformatan tebal, miring, ukuran font, dan warna pada teks dalam sebuah presentasi.

Panduan Langkah-demi-Langkah

Langkah 1: Bangun dan Tautkan Perpustakaan

git clone https://github.com/aspose-slides-foss/Aspose.Slides-FOSS-for-Cpp.git
cd Aspose.Slides-FOSS-for-Cpp && mkdir build && cd build
cmake .. && cmake --build .

Langkah 2: Tambahkan Bentuk dengan Bingkai Teks

Sebelum memformat teks, tambahkan sebuah shape dan atur konten teksnya melalui shape.text_frame()->set_text().

#include <Aspose/Slides/Foss/presentation.h>

int main() {
    namespace asf = Aspose::Slides::Foss;

    asf::Presentation prs;
    auto& slide = prs.slides()[0];
    auto& shape = slide.shapes().add_auto_shape(
        asf::ShapeType::RECTANGLE, 50, 50, 500, 150);
    shape.text_frame()->set_text("Default text: will be formatted");
    prs.save("output.pptx", asf::SaveFormat::PPTX);
    return 0;
}

Langkah 3: Akses TextFrame

shape.text_frame() mengembalikan pointer ke shape’s TextFrame. Gunakan -> untuk memanggil metode pada objek tersebut.

auto* tf = shape.text_frame();          // pointer to the shape's text frame
tf->set_text("your text here");

A TextFrame mengandung Paragraph objek (tf->paragraphs()). Setiap Paragraph mengandung Portion objek (paragraph.portions()).


Langkah 4: Terapkan Pemformatan Tebal dan Miring

Gunakan portion_format().set_font_bold() dan portion_format().set_font_italic(). Metode-metode ini menerima NullableBool::TRUE, NullableBool::FALSE, atau NullableBool::NOT_DEFINED (mewarisi dari master).

#include <Aspose/Slides/Foss/presentation.h>

int main() {
    namespace asf = Aspose::Slides::Foss;

    asf::Presentation prs;
    auto& slide = prs.slides()[0];
    auto& shape = slide.shapes().add_auto_shape(
        asf::ShapeType::RECTANGLE, 50, 50, 500, 150);
    shape.text_frame()->set_text("Bold and italic text");
    auto* tf = shape.text_frame();

    auto& fmt = tf->paragraphs()[0].portions()[0].portion_format();
    fmt.set_font_bold(asf::NullableBool::TRUE);
    fmt.set_font_italic(asf::NullableBool::TRUE);

    prs.save("bold-italic.pptx", asf::SaveFormat::PPTX);
    return 0;
}

Langkah 5: Atur Ukuran Font dan Warna

Atur portion_format().set_font_height() untuk ukuran (dalam poin) dan gunakan fill_format() untuk warna.

#include <Aspose/Slides/Foss/presentation.h>

int main() {
    namespace asf = Aspose::Slides::Foss;

    asf::Presentation prs;
    auto& slide = prs.slides()[0];
    auto& shape = slide.shapes().add_auto_shape(
        asf::ShapeType::RECTANGLE, 50, 50, 500, 150);
    shape.text_frame()->set_text("Large corporate-blue heading");
    auto* tf = shape.text_frame();

    auto& fmt = tf->paragraphs()[0].portions()[0].portion_format();
    fmt.set_font_height(32);                               // 32pt font
    fmt.set_font_bold(asf::NullableBool::TRUE);
    fmt.fill_format().set_fill_type(asf::FillType::SOLID);
    fmt.fill_format().solid_fill_color().set_color(
        asf::Color::from_argb(255, 0, 70, 127));

    prs.save("colored-text.pptx", asf::SaveFormat::PPTX);
    return 0;
}

Color::from_argb(alpha, red, green, blue) menerima nilai 0-255 untuk setiap saluran.


Langkah 6: Beberapa Portion dalam Satu Paragraf

Sebuah paragraf tunggal dapat berisi beberapa bagian dengan pemformatan yang berbeda. Tambahkan yang baru Portion ke paragraf portions() koleksi:

#include <Aspose/Slides/Foss/presentation.h>

int main() {
    namespace asf = Aspose::Slides::Foss;

    asf::Presentation prs;
    auto& slide = prs.slides()[0];
    auto& shape = slide.shapes().add_auto_shape(
        asf::ShapeType::RECTANGLE, 50, 50, 600, 100);
    shape.text_frame()->set_text(""); // start with empty text
    auto* tf = shape.text_frame();

    auto& paragraph = tf->paragraphs()[0];

    // First portion: normal text
    auto& portion1 = paragraph.portions()[0];
    portion1.set_text("Normal text followed by ");
    portion1.portion_format().set_font_height(20);

    // Second portion: bold red text
    asf::Portion portion2;
    portion2.set_text("bold red text");
    portion2.portion_format().set_font_height(20);
    portion2.portion_format().set_font_bold(asf::NullableBool::TRUE);
    portion2.portion_format().fill_format().set_fill_type(asf::FillType::SOLID);
    portion2.portion_format().fill_format().solid_fill_color().set_color(
        asf::Color::from_argb(255, 200, 0, 0));
    paragraph.portions().add(portion2);

    prs.save("mixed-format.pptx", asf::SaveFormat::PPTX);
    return 0;
}

Masalah Umum dan Solusinya

Teks tetap berwarna hitam meskipun sudah mengatur warna

Pastikan fill_format().set_fill_type(FillType::SOLID) diatur sebelum menetapkan warna. Tanpa mengatur tipe isian, perubahan warna mungkin tidak berpengaruh.

NullableBool::TRUE vs true

portion_format().set_font_bold() mengharapkan NullableBool::TRUE, bukan C++ true. Mengirimkan true langsung tidak akan dapat dikompilasi atau akan memiliki perilaku tidak terdefinisi tergantung pada resolusi overload.

Font tidak muncul dalam file yang disimpan

Metode set_latin_font() mengatur keluarga font Latin. Jika tidak diatur, font tema presentasi yang digunakan. Font khusus harus disematkan atau tersedia pada mesin penampil.


Pertanyaan yang Sering Diajukan

Bagaimana cara mengubah keluarga font?

Setel portion_format().set_latin_font():

fmt.set_latin_font(asf::FontData("Arial"));

FontData menerima nama keluarga font sebagai string.

Bagaimana cara mengatur perataan paragraf?

Gunakan paragraph_format().set_alignment():

tf.paragraphs()[0].paragraph_format().set_alignment(asf::TextAlignment::CENTER);

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

Bagaimana cara mengatur spasi baris?

Gunakan paragraph_format().set_space_before() (titik sebelum paragraf) atau paragraph_format().set_space_after() (titik setelah paragraf):

tf.paragraphs()[0].paragraph_format().set_space_before(12); // 12pt before
tf.paragraphs()[0].paragraph_format().set_space_after(6);   // 6pt after

Lihat Juga

 Bahasa Indonesia