Einführung
Aspose.Slides FOSS for C++ (aspose_slides_foss) ist eine kostenlose, Open-Source C++20 Bibliothek zum erstellen und manipulieren von PowerPoint Präsentationen programmatisch. Es wurde vollständig in nativer C ++ mit keiner externen Laufzeit Abhängigkeiten über CMake 3.20 + gebaut, es gibt Entwicklern volle Kontrolle über PPTX Dateien ohne Microsoft Office oder proprietäre Software erforderlich zu machen.
Die Bibliothek wird unter der MIT-Lizenz veröffentlicht, so dass sie sowohl für kommerzielle als auch nichtkommerziellen Projekte geeignet ist. Aspose::Slides::Foss Name-Space und bietet ein reichhaltiges Objektmodell, das Präsentationen, Diapositionen, Formen, Tabellen, Textrahmen und Dokumentenigkeiten sowie Kommentare und PPTX Export abdeckt.
Dieser Beitrag führt Sie durch die Kern-API Oberfläche: die Klassen und Methoden, die Sie am häufigsten beim Erstellen, Formatieren und Speichern von Präsentationen verwenden werden.
Was ist darin enthalten?
Präsentation und Dia-Verwaltung
Die Presentation Wenn Sie eine neue Instanz erstellen, erhalten Sie einen Standard-Slide, der sofort für den Inhalt bereit ist. SlideCollection zurückgegeben von: slides(), die indexisierten Zugriff, Iteration, Entfernung und Umordnung unterstützt.
#include <Aspose/Slides/Foss/presentation.h>
using namespace Aspose::Slides::Foss;
Presentation pres;
auto& slide = pres.slides()[0]; // first slide
// Work with the slide...
pres.save("output.pptx", SaveFormat::PPTX);
Formen und AutoFormen
Jede Folie zeigt eine ShapeCollection durch seine shapes() Die Sammlung enthält Werkverfahren für die Zugabe verschiedener Formtypen: add_auto_shape für Standardgeometrieformen (Rechtecke, Ellipsen und Dreiecken), add_connector für Leitungsanschlüsse, add_table für Tabellen und add_picture_frame für Bilder.
auto& slide = pres.slides()[0];
// Add a rectangle
auto& rect = slide.shapes().add_auto_shape(
ShapeType::RECTANGLE, 50, 50, 300, 100);
// Add an ellipse
auto& ellipse = slide.shapes().add_auto_shape(
ShapeType::ELLIPSE, 400, 50, 150, 150);
// Add a connector between shapes
auto& conn = slide.shapes().add_connector(
ShapeType::BENT_CONNECTOR3, 0, 0, 1, 1);
Die ShapeCollection auch unterstützt size(), remove(), remove_at(), reorder(), index_of(),und . clear() für die Gestaltung von Formen nach der Schöpfung.
Text- und Absatzformatierung
Formen können Text über die TextFrame.- Verwenden . add_text_frame() auf einer AutoShape Textinhalt beifügen oder den vorhandenen Rahmen über die text_frame().Der Text ist in Absätze unterteilt, die jeweils einen oder mehrere Teile enthalten. BasePortionFormat Die Klasse zeigt die Schriftstyling-Eigenschaften, darunter fett-, kursiv-, Unterstricheinheit, Großbuchstaben, Durchschlag und Schriftschärfe.
auto& shape = pres.slides()[0].shapes().add_auto_shape(
ShapeType::RECTANGLE, 50, 50, 300, 100, false);
shape.add_text_frame("Hello, world!");
auto text = shape.text_frame()->text(); // "Hello, world!"
Füllung, Gradient und visuelle Effekte
Jede Form stellt eine FillFormat über die fill_format().Sie können feste Füllungen, Steigungsfülle oder Musterfüllung durch die set_fill_type() Die Gradientenfüllungen werden durch die GradientFormat Objekt, das lineare Winkel unterstützt, Gradientenform und Farb-Stopps über GradientStopCollection.
auto& shape = slide.shapes().add_auto_shape(
ShapeType::RECTANGLE, 50, 50, 300, 150);
shape.fill_format().set_fill_type(FillType::GRADIENT);
auto& gf = shape.fill_format().gradient_format();
gf.set_gradient_shape(GradientShape::LINEAR);
gf.set_linear_gradient_angle(45);
gf.gradient_stops().add(0.0f, Color::blue);
gf.gradient_stops().add(1.0f, Color::red);
Die EffectFormat Klasse (über die effect_format()) ergänzt durch Glanz, äußere Schatten und weiche Kanteneffekte. Jeder Effekt wird mit einer speziellen Methode aktiviert (enable_glow_effect(), enable_outer_shadow_effect(), enable_soft_edge_effect()) und durch sein zurückgegebenes Objekt konfiguriert.
Tabellen und Daten
Tabellen werden mit add_table() Sie liefern Spaltenbreiten und Zeilenhöhen als Vektoren. Table Objekt-Exposure rows() und . columns() Einheitliche und private Sammlungen. Cell Objekte unterstützen Textinhalte über TextFrame.
std::vector<double> col_widths = {100, 150, 200};
std::vector<double> row_heights = {40, 40, 40};
auto& table = slide.shapes().add_table(
50, 50, col_widths, row_heights);
// table.rows().size() == 3
// table.columns().size() == 3
Dokument-Eigenschaften und -Anmerkungen
Die DocumentProperties class ermöglicht es Ihnen, Metadaten wie Titel, Autor, Thema, Keywords, Kategorie, Revisionsnummer und Zeitstempel einzustellen. Zugriff auf sie über das Präsentationsobjekt.
Die Kommentare werden über die CommentAuthorCollection und . CommentCollection.Sie fügen Autoren mit . add_author(), fügen Sie dann Kommentare zu bestimmten Folien an spezifischen Koordinaten hinzu.
Presentation pres;
auto& author = pres.comment_authors().add_author("Alice", "A");
auto& slide = pres.slides()[0];
auto& comment = author.comments().add_comment(
"Review note", slide, PointF(2.0f, 3.0f), now);
Schneller Start
Von der Quelle aus bauen
Die Bibliothek erfordert CMake 3.20+ und einen C++20-fähigen Compiler. Klonen Sie das Repository und bauen:
git clone https://github.com/aspose-slides-foss/Aspose.Slides-FOSS-for-Cpp.git
cd Aspose.Slides-FOSS-for-Cpp
cmake -B build -DCMAKE_BUILD_TYPE=Release
cmake --build build
Minimaler Beispiel
#include <Aspose/Slides/Foss/presentation.h>
using namespace Aspose::Slides::Foss;
int main() {
Presentation pres;
auto& slide = pres.slides()[0];
// Add a shape with text
auto& shape = slide.shapes().add_auto_shape(
ShapeType::RECTANGLE, 50, 50, 300, 100, false);
shape.add_text_frame("Hello from Aspose.Slides FOSS!");
// Apply a solid fill
shape.fill_format().set_fill_type(FillType::SOLID);
shape.fill_format().solid_fill_color().set_color(Color::blue);
// Save
pres.save("hello.pptx", SaveFormat::PPTX);
return 0;
}
Unterstützte Formate
Die SaveFormat Enum definiert alle Exportziele. Im Quellcode werden folgende Formate bestätigt:
| Format der Datenbank | Erweiterung | Lesen Sie . | Schreiben . |
|---|---|---|---|
| PPTX | .pptx | – | - Ja , das ist gut . |
| PPT | .ppt | – | Geplant |
| PPSX | .ppsx | – | Geplant |
| PPTM | .pptm | – | Geplant |
| PPSM | .ppsm | – | Geplant |
| POTX | .- Das ist nicht wahr. | – | Geplant |
| POTM | .- Ich bin hier. | – | Geplant |
| POT | .- Schachtel . | – | Geplant |
| PPS | .pps | – | Geplant |
| ODP | .odp (auch als “ODP”) | – | Geplant |
| OTP | .otp (auf dem Internet verfügbar) | – | Geplant |
| FODP | .fodp (Food) | – | Geplant |
| .pdf (auf Englisch) | – | Geplant | |
| XPS | .xps | – | Geplant |
| HTML | .html ist ein | – | Geplant |
| HTML5 | .html ist ein | – | Geplant |
| TIFF | .- Ich bin nicht da. | – | Geplant |
| GIF | .Gif | – | Geplant |
| SWF | .swf | – | Geplant |
| MD | .md | – | Geplant |
| XML | .xml | – | Geplant |
Anmerkung: Derzeit wird nur der PPTX-Export implementiert. SaveFormat Die neuen Systeme sind zwar nicht für die Zukunft kompatibel, aber noch nicht funktionsfähig. save() Die Methode erzeugt immer PPTX-Ausgabe, unabhängig vom Formatparameter.
Open Source und Lizenzierung
Aspose.Slides FOSS for C++ is released under the MIT license. You can use it freely in personal projects, commercial applications, and redistributed libraries. There are no API keys, watermarks, or usage limits. The full source code is available on GitHub at https://github.com/aspose-slides-foss/Aspose.Slides FOSS-für-Cpp.
Wie man anfängt
Sind Sie bereit, Aspose.Slides FOSS in Ihr C++-Projekt zu integrieren? Hier sind die wichtigsten Ressourcen:
- Dokumentation und Informationen: Das ist eine sehr wichtige Aufgabe. für Entwicklerhandbücher, Tutorials und Konzeptübersichten.
- Wissensbasis: Die Kommission hat die Veröffentlichung der neuen Richtlinie in einer Sitzung des Europäischen Parlaments vom 10. Dezember 2014 beschlossen. für FAQs und Anleitungen zu Artikeln, die gemeinsame Aufgaben abdecken.
- Referenz für die API: Die Kommission hat die Veröffentlichung der neuen Richtlinie in einer Sitzung des Europäischen Parlaments vom 10. Dezember 2008 angenommen. für die klassenübergreifende Dokumentation der vollständigen öffentlichen API.