Hvordan formatere tekst i C++
Aspose.Slides FOSS for C++ provides fine-grained text formatting through the PortionFormat klasse. A Portion er den minste uavhengige enheten av tekst; den tilsvarer en enkelt formateringssekvens innenfor et avsnitt. Denne guiden viser hvordan du bruker fet, kursiv, skriftstørrelse og fargeformatering på tekst i en presentasjon.
Steg-for-steg guide
Steg 1: Bygg og lenk biblioteket
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 .Steg 2: Legg til en form med en tekstramme
Før du formaterer tekst, legg til en form og angi tekstinnholdet via 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;
}Steg 3: Få tilgang til TextFrame
shape.text_frame() returnerer en peker til formens TextFrame. Bruk -> for å kalle metoder på den.
auto* tf = shape.text_frame(); // pointer to the shape's text frame
tf->set_text("your text here");En TextFrame inneholder Paragraph objekter (tf->paragraphs()). Hver Paragraph inneholder Portion objekter (paragraph.portions()).
Steg 4: Bruk fet og kursiv formatering
Bruk portion_format().set_font_bold() og portion_format().set_font_italic(). Disse metodene godtar NullableBool::TRUE, NullableBool::FALSE, eller NullableBool::NOT_DEFINED (arve fra 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;
}Steg 5: Angi skriftstørrelse og farge
Sett portion_format().set_font_height() for størrelse (i punkter) og bruk fill_format() for farge.
#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) aksepterer verdier 0-255 for hver kanal.
Steg 6: Flere portioner i ett avsnitt
Et enkelt avsnitt kan inneholde flere deler med forskjellig formatering. Legg til en ny Portion til et avsnitts portions() samling:
#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;
}Vanlige problemer og løsninger
Teksten vises svart selv etter at fargen er satt
Sørg for fill_format().set_fill_type(FillType::SOLID) er satt før fargen tildeles. Uten å sette fylltypen kan fargeendringen ha ingen effekt.
NullableBool::TRUE vs true
portion_format().set_font_bold() forventer NullableBool::TRUE, ikke C++ true. Å sende true direkte vil ikke kompilere eller vil ha ubestemt oppførsel avhengig av overbelastningsoppløsningen.
Font vises ikke i den lagrede filen
Den set_latin_font() metoden setter den latinske skrifttypen. Hvis den ikke er satt, brukes presentasjonstemaets skrifttype. Tilpassede skrifttyper må være innebygd eller tilgjengelig på visningsmaskinen.
Ofte stilte spørsmål
Hvordan endrer jeg skriftfamilien?
Angi portion_format().set_latin_font():
fmt.set_latin_font(asf::FontData("Arial"));FontData aksepterer skrifttypenavnet som en streng.
Hvordan setter jeg avsnittsjustering?
Bruk paragraph_format().set_alignment():
tf.paragraphs()[0].paragraph_format().set_alignment(asf::TextAlignment::CENTER);Støttede verdier: LEFT, CENTER, RIGHT, JUSTIFY.
Hvordan setter jeg linjeavstand?
Bruk paragraph_format().set_space_before() (punkter før avsnitt) eller paragraph_format().set_space_after() (punkter etter avsnitt):
tf.paragraphs()[0].paragraph_format().set_space_before(12); // 12pt before
tf.paragraphs()[0].paragraph_format().set_space_after(6); // 6pt after