Ako formátovať text v C++

Aspose.Slides FOSS for C++ provides fine-grained text formatting through the PortionFormat trieda. A Portion je najmenšia nezávislá jednotka textu; zodpovedá jednému formátovaciemu úseku v odstavci. Tento sprievodca ukazuje, ako použiť tučné, kurzívne, veľkosť písma a farebné formátovanie na text v prezentácii.

Postupný návod

Krok 1: Zostavte a prepojte knižnicu

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 .

Krok 2: Pridajte tvar s textovým rámcom

Pred formátovaním textu pridajte tvar a nastavte jeho textový obsah pomocou 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;
}

Krok 3: Získajte prístup k TextFrame

shape.text_frame() vracia ukazovateľ na tvar TextFrame. Použite -> na volanie metód na ňom.

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

A TextFrame obsahuje Paragraph objekty (tf->paragraphs()). Každý Paragraph obsahuje Portion objekty (paragraph.portions()).


Krok 4: Použite tučné a kurzívne formátovanie

Použite portion_format().set_font_bold() a portion_format().set_font_italic(). Tieto metódy akceptujú NullableBool::TRUE, NullableBool::FALSE, alebo NullableBool::NOT_DEFINED (zdediť z 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;
}

Krok 5: Nastavte veľkosť písma a farbu

Nastaviť portion_format().set_font_height() pre veľkosť (v bodoch) a použite fill_format() pre farbu.

#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) akceptuje hodnoty 0‑255 pre každý kanál.


Krok 6: Viacero častí v jednom odstavci

Jeden odsek môže obsahovať viacero častí s rôznym formátovaním. Pridajte nový Portion do odseku portions() zbierka:

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

Bežné problémy a riešenia

Text zostáva čierny aj po nastavení farby

Zabezpečte fill_format().set_fill_type(FillType::SOLID) je nastavené pred priradením farby. Bez nastavenia typu výplne môže zmena farby nemajú žiadny účinok.

NullableBool::TRUE vs true

portion_format().set_font_bold() očakáva NullableBool::TRUE, nie C++ true. Odovzdanie true priamo sa nepreloží alebo bude mať nedefinované správanie v závislosti od riešenia preťaženia.

Písmo sa v uloženom súbore neobjavuje

Metóda set_latin_font() metóda nastavuje latinskú rodinu písma. Ak nie je nastavená, použije sa písmo témy prezentácie. Vlastné písma musia byť vložené alebo dostupné na zobrazovacom zariadení.


Často kladené otázky

Ako zmením rodinu písma?

Nastavte portion_format().set_latin_font():

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

FontData akceptuje názov rodiny písma ako reťazec.

Ako nastaviť zarovnanie odseku?

Použite paragraph_format().set_alignment():

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

Podporované hodnoty: LEFT, CENTER, RIGHT, JUSTIFY.

Ako nastaviť riadkovú medzeru?

Použiť paragraph_format().set_space_before() (bodky pred odstavcom) alebo paragraph_format().set_space_after() (bodky po odstavci):

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

Pozri tiež

 Slovenčina