Kako formatirati tekst u C++

Kako formatirati tekst u C++

Aspose.Slides FOSS for C++ provides fine-grained text formatting through the PortionFormat klasa. A Portion je najmanja nezavisna jedinica teksta; ona se mapira na jedan formatirajući segment unutar pasusa. Ovaj vodič pokazuje kako primeniti podebljano, kurziv, veličinu fonta i formatiranje boje na tekst u prezentaciji.

Vodič korak po korak

Korak 1: Izgradite i povežite biblioteku

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 .

Korak 2: Dodajte oblik sa tekstualnim okvirom

Pre formatiranja teksta, dodajte oblik i postavite njegov sadržaj teksta putem 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;
}

Korak 3: Pristupite TextFrame-u

shape.text_frame() vraća pokazivač na oblik TextFrame. Koristite -> da pozovete metode na njemu.

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

A TextFrame sadrži Paragraph objekti (tf->paragraphs()). Svaki Paragraph sadrži Portion objekti (paragraph.portions()).


Korak 4: Primena podebljanog i kurziva

Koristi portion_format().set_font_bold() i portion_format().set_font_italic(). Ove metode prihvataju NullableBool::TRUE, NullableBool::FALSE, ili NullableBool::NOT_DEFINED (nasleđuje se od mastera).

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

Korak 5: Postavljanje veličine fonta i boje

Postavi portion_format().set_font_height() za veličinu (u tačkama) i koristi fill_format() za boju.

#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) prihvata vrednosti 0-255 za svaki kanal.


Korak 6: Više delova u jednom paragrafu

Jedan odlomak može da sadrži više delova sa različitim formatiranjem. Dodajte novi Portion odlomku portions() kolekcija:

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

Uobičajeni problemi i rešenja

Tekst se prikazuje crno iako je boja postavljena

Osigurajte fill_format().set_fill_type(FillType::SOLID) se postavlja pre dodele boje. Bez postavljanja tipa popunjavanja, promena boje možda neće imati efekta.

NullableBool::TRUE vs true

portion_format().set_font_bold() očekuje NullableBool::TRUE, a ne C++ true. Prosleđivanje true direktno neće biti kompajlirano ili će imati nedefinisano ponašanje u zavisnosti od rezolucije preopterećenja.

Font se ne pojavljuje u sačuvanoj datoteci

The set_latin_font() metod postavlja Latin font porodicu. Ako nije postavljeno, koristi se font teme prezentacije. Prilagođeni fontovi moraju biti ugrađeni ili dostupni na računaru za pregled.


Često postavljana pitanja

Kako da promenim porodicu fonta?

Postavi portion_format().set_latin_font():

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

FontData prihvata naziv font porodice kao string.

Kako da postavim poravnanje pasusa?

Koristi paragraph_format().set_alignment():

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

Podržane vrednosti: LEFT, CENTER, RIGHT, JUSTIFY.

Kako da postavim razmak između redova?

Koristi paragraph_format().set_space_before() (tačaka pre pasusa) ili paragraph_format().set_space_after() (tačaka posle pasusa):

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

Vidi takođe

 Српски