Cara Memformat Teks di C++

Cara Memformat Teks di C++

Aspose.Slides FOSS for C++ menyediakan pemformatan teks yang sangat detail melalui kelas PortionFormat. Sebuah Portion adalah unit teks independen terkecil; ia memetakan ke satu run 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 bentuk 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 TextFrame bentuk. Gunakan -> untuk memanggil metode pada pointer tersebut.

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

Sebuah TextFrame berisi Paragraph objek (tf->paragraphs()). Setiap Paragraph berisi 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

Set 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 Bagian dalam Satu Paragraf

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

#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 Solusi

Teks muncul hitam meskipun sudah mengatur warna

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

NullableBool::TRUE vs true

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

Font tidak muncul di file yang disimpan

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


Pertanyaan yang Sering Diajukan

Bagaimana cara mengubah keluarga font?

Atur 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