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