Kā formatēt tekstu C++

Kā formatēt tekstu C++

Aspose.Slides FOSS for C++ provides fine-grained text formatting through the PortionFormat class. A Portion ir mazākā neatkarīgā teksta vienība; tas atbilst vienam formatēšanas posmam rindkopā. Šis ceļvedis parāda, kā prezentācijā uz teksta piemērot treknrakstu, slīprakstu, fonta lielumu un krāsas formatēšanu.

Solī pa solim rokasgrāmata

1. solis: Veidot un sasaistīt bibliotēku

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 .

2. solis: Pievienojiet formu ar teksta rāmi

Pirms teksta formatēšanas pievienojiet formu un iestatiet tās teksta saturu, izmantojot 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;
}

3. solis: Piekļūstiet TextFrame

shape.text_frame() atgriež rādītāju uz formas TextFrame. Izmantojiet -> lai izsauktu metodes uz tās.

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

A TextFrame satur Paragraph objektus (tf->paragraphs()). Katrs Paragraph satur Portion objektus (paragraph.portions()).


4. solis: Pielietojiet treknraksta un slīpraksta formatēšanu

Izmantojiet portion_format().set_font_bold() un portion_format().set_font_italic(). Šīs metodes pieņem NullableBool::TRUE, NullableBool::FALSE, vai NullableBool::NOT_DEFINED (mantot no galvenā).

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

5. solis: Iestatiet fonta lielumu un krāsu

Iestatīt portion_format().set_font_height() izmēram (punktos) un lietošanai fill_format() krāsai.

#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) pieņem vērtības no 0 līdz 255 katram kanālam.


6. solis: Vairāki fragmenti vienā rindkopā

Viena rindkopa var saturēt vairākas daļas ar atšķirīgu formatējumu. Pievieno jaunu Portion rindkopas 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;
}

Biežāk sastopamās problēmas un to risinājumi

Teksts parādās melns, pat pēc krāsas iestatīšanas

Pārliecinies fill_format().set_fill_type(FillType::SOLID) ir iestatīts pirms krāsas piešķiršanas. Bez aizpildījuma tipa iestatīšanas krāsas maiņa var neizraisīt nekādu efektu.

NullableBool::TRUE vs true

portion_format().set_font_bold() gaida NullableBool::TRUE, nevis C++ true. Pārsūtot true tieši netiks kompilēts vai radīs nenoteiktu uzvedību, atkarībā no pārsniegšanas izšķiršanas.

Fonts neparādās saglabātajā failā

Šis set_latin_font() metode iestata Latīņu fontu ģimeni. Ja nav iestatīta, tiek izmantots prezentācijas tēmas fonts. Pielāgotie fonti jāiekļauj vai jābūt pieejamiem skatīšanas ierīcē.


Biežāk uzdotie jautājumi

Kā es varu mainīt fonta ģimeni?

Iestatīt portion_format().set_latin_font():

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

FontData pieņem fonta ģimenes nosaukumu kā virkni.

Kā iestatīt rindkopas līdzinājumu?

Izmantot paragraph_format().set_alignment():

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

Atbalstītās vērtības: LEFT, CENTER, RIGHT, JUSTIFY.

Kā iestatīt rindas atstarpi?

Izmantot paragraph_format().set_space_before() (punkti pirms rindkopas) vai paragraph_format().set_space_after() (punkti pēc rindkopas):

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

Skatīt arī

 Latviešu