Wie man Präsentationen in C++ lädt

Wie man Präsentationen in C++ lädt

Aspose.Slides FOSS for C++ lets you open any .pptx Datei, prüfen Sie deren Inhalt und speichern Sie sie entweder wieder als PPTX oder extrahieren Sie Daten daraus. Diese Anleitung behandelt das Öffnen einer Datei, das Durchlaufen von Folien, das Lesen von Formtexten und das Round‑Trip‑Speichern.

Schritt-für-Schritt-Anleitung

Schritt 1: Bibliothek bauen und verlinken

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 .

Schritt 2: Eine vorhandene Präsentation öffnen

Übergeben Sie den Dateipfad an die Presentation Konstruktor. Der Destruktor übernimmt die Bereinigung.

#include <Aspose/Slides/Foss/presentation.h>
#include <iostream>

int main() {
    namespace asf = Aspose::Slides::Foss;

    asf::Presentation prs("input.pptx");
    std::cout << "Slide count: " << prs.slides().size() << "\n";
    prs.save("output.pptx", asf::SaveFormat::PPTX);
    return 0;
}

Unbekannte XML‑Teile in der Quelldatei werden unverändert beibehalten: Die Bibliothek entfernt niemals Inhalte, die sie noch nicht versteht.


Schritt 3: Folien untersuchen

Durchlaufen Sie alle Folien und geben Sie deren Formanzahl aus:

#include <Aspose/Slides/Foss/presentation.h>
#include <iostream>

int main() {
    namespace asf = Aspose::Slides::Foss;

    asf::Presentation prs("deck.pptx");
    for (size_t i = 0; i < prs.slides().size(); ++i) {
        auto& slide = prs.slides()[i];
        std::cout << "Slide " << i << ": "
                  << slide.shapes().size() << " shapes\n";
    }
    return 0;
}

Schritt 4: Formtext lesen

Iterieren Sie über Formen und lesen Sie Text aus Formen, die ein TextFrame:

#include <Aspose/Slides/Foss/presentation.h>
#include <iostream>

int main() {
    namespace asf = Aspose::Slides::Foss;

    asf::Presentation prs("deck.pptx");
    for (size_t i = 0; i < prs.slides().size(); ++i) {
        auto& slide = prs.slides()[i];
        for (size_t j = 0; j < slide.shapes().size(); ++j) {
            auto& shape = slide.shapes()[j];
            if (shape.has_text_frame()) {
                auto text = shape.text_frame()->text();
                if (!text.empty()) {
                    std::cout << "  Shape text: " << text << "\n";
                }
            }
        }
    }
    return 0;
}

Schritt 5: Dokumenteigenschaften lesen

Greifen Sie auf die Kerndokumenteigenschaften von prs.document_properties():

#include <Aspose/Slides/Foss/presentation.h>
#include <iostream>

int main() {
    namespace asf = Aspose::Slides::Foss;

    asf::Presentation prs("deck.pptx");
    auto& props = prs.document_properties();
    std::cout << "Title:   " << props.title() << "\n";
    std::cout << "Author:  " << props.author() << "\n";
    std::cout << "Subject: " << props.subject() << "\n";
    return 0;
}

Schritt 6: Round‑Trip‑Speichern

Nachdem Sie die Präsentation untersucht oder geändert haben, speichern Sie sie wieder als PPTX:

prs.save("output.pptx", asf::SaveFormat::PPTX);

Das Speichern an einen anderen Pfad erstellt eine neue Datei. Das Speichern am selben Pfad überschreibt die Originaldatei.


Häufige Probleme und Lösungen

Datei nicht gefunden oder kann nicht geöffnet werden

Überprüfen Sie, dass der Pfad zu dem .pptx Datei relativ zum Arbeitsverzeichnis korrekt ist. Verwenden Sie std::filesystem::path für eine robuste Pfadkonstruktion:

#include <filesystem>
auto path = std::filesystem::path(__FILE__).parent_path() / "assets" / "deck.pptx";
asf::Presentation prs(path.string());

Ausnahme: Dateiformat wird nicht unterstützt

Die Bibliothek unterstützt .pptx (Office Open XML) nur. Legacy .ppt (binary PowerPoint 97-2003) Dateien werden nicht unterstützt.

Form hat keinen text_frame

Einige Formen (Connectors, PictureFrames, GroupShapes) besitzen keinen Textrahmen. Schützen Sie den Zugriff mit shape.has_text_frame() bevor Sie auf Text zugreifen.


Häufig gestellte Fragen

Wird beim Laden der gesamte Originalinhalt erhalten?

Ja. Unbekannte XML‑Teile werden beim Rundreise‑Speichern unverändert beibehalten. Die Bibliothek serialisiert nur die Teile des Dokumentmodells, die sie versteht, und lässt jedes XML, das sie nicht erkennt, unverändert durch.

Kann ich ein passwortgeschütztes PPTX laden?

Passwortgeschützte (verschlüsselte) Präsentationen werden in dieser Edition nicht unterstützt.

Kann ich eingebettete Bilder extrahieren?

Greifen Sie auf die Bildersammlung zu: prs.images() gibt das ImageCollection. Jedes Bild hat ein width(), height(), und binary_data() Methode, um die Rohbilddaten zu lesen.

Wird das Laden aus einem In‑Memory‑Puffer unterstützt?

Laden aus einem std::vector<uint8_t> oder std::istream ist in der aktuellen API nicht verfügbar. Schreiben Sie die Bytes zuerst in eine temporäre Datei und übergeben Sie dann den Pfad an die Presentation Konstruktor.


Siehe auch

 Deutsch