Hvordan formatere tekst i C++
Aspose.Slides FOSS for C++ gir finjustert tekstformatering gjennom PortionFormat-klassen. En Portion er den minste uavhengige enheten av tekst; den tilsvarer en enkelt formateringssekvens i et avsnitt. Denne veiledningen viser hvordan du bruker fet, kursiv, skriftstørrelse og fargeformatering på tekst i en presentasjon.
Trinn-for-trinn guide
Steg 1: Bygg og koble 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 sett 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;
}Trinn 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 (arver 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;
}Trinn 5: Angi skriftstørrelse og farge
Angi 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 deler i ett avsnitt
Et enkelt avsnitt kan inneholde flere deler med forskjellig formatering. Legg til en ny Portion i 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
Tekst vises svart selv etter å ha satt farge
Sørg for at fill_format().set_fill_type(FillType::SOLID) er satt før du tilordner fargen. 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 overload‑oppløsningen.
Skrift vises ikke i den lagrede filen
set_latin_font()-metoden setter den latinske skrifttypefamilien. Hvis den ikke er satt, brukes presentasjonstemaets skrifttype. Tilpassede skrifttyper må være innebygd eller tilgjengelige på visningsmaskinen.
Ofte stilte spørsmål
Hvordan endrer jeg skrifttypefamilien?
Angi portion_format().set_latin_font():
fmt.set_latin_font(asf::FontData("Arial"));FontData aksepterer fontfamilienavnet 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