Kā formatēt tekstu C++ valodā

Kā formatēt tekstu C++ valodā

Aspose.Slides FOSS for C++ nodrošina smalku teksta formatēšanu, izmantojot PortionFormat klasi. Portion ir mazākā neatkarīgā teksta vienība; tā 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: Bibliotēkas būvēšana un saistīšana

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: Pievienot formu ar teksta rāmju

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ļūt 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");

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


4. solis: Pielietot 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 (mantojot no 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;
}

5. solis: iestatīt fonta lielumu un krāsu

Iestatiet portion_format().set_font_height() izmēram (punktos) un izmantojiet 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 0-255 katram kanālam.


Solis 6: Vairāki fragmenti vienā rindkopā

Viena rindkopa var saturēt vairākas daļas ar atšķirīgu formatējumu. Pievienojiet jaunu Portion rindkopas portions() kolekcijai:

#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ži sastopamās problēmas un risinājumi

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

Pārliecinieties, ka 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 nebūt ietekmīga.

NullableBool::TRUE pret true

portion_format().set_font_bold() sagaida NullableBool::TRUE, nevis C++ true. Tieša true nodošana nekompilēsies vai radīs nenoteiktu uzvedību atkarībā no pārslogojuma izšķiršanas.

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

set_latin_font() metode iestata latīņu fontu ģimeni. Ja nav iestatīta, tiek izmantots prezentācijas tēmas fonts. Pielāgotajiem fontiem jābūt iegultiem vai pieejamiem skatīšanas ierīcē.


Biežāk uzdotie jautājumi

Kā es varu mainīt fonta ģimeni?

Kopa portion_format().set_latin_font():

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

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

Kā es varu iestatīt rindkopas izlīdzinājumu?

Izmantojiet 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 rindstarpu?

Izmantojiet 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