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 Diese Anleitung umfasst das Öffnen einer Datei, Iteration von Folien, Lesen von Formtext und Rundfahrt beim Speichern.

Schritt für Schritte

Schritt 1: Erstellen und Verknüpfen der Bibliothek

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: Öffnen Sie eine vorhandene Präsentation

Übergeben Sie den Pfad der Datei an die Presentation Der Zerstörer kümmert sich um die Reinigung.

#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 wörtlich erhalten: Die Bibliothek entfernt nie Inhalte, die sie noch nicht versteht.


Schritt 3: Slides überprüfen

Iterate über alle Folien und drucken Sie ihre Formzahl:

#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: Lesen von Textform

Iteration über Formen und Lesen von Text aus Formularen, die eine 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: Lesen der Dokument-Eigenschaften

Zugriff auf Kerndokument-Eigenschaften 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: Rundfahrt speichern

Nach der Überprüfung oder Änderung der Darstellung speichern Sie sie wieder in PPTX:

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

Wenn man auf einen anderen Pfad speichert, erstellt sich eine neue Datei.


Häufige Probleme und Lösungen

Datei nicht gefunden oder nicht geöffnet werden kann

Überprüfen Sie, ob der Weg zum .pptx Die Datenbank ist nicht korrekt im Verhältnis zum Arbeitsverzeichnis. std::filesystem::path für robuste Bahnkonstruktionen:

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

Ausnahme: Dateifort wird nicht unterstützt

Die Bibliothek unterstützt die .pptx (Office Open XML) nur. Vermächtlichte Versionen .ppt (binäres PowerPoint 97-2003) nicht unterstützt.

Form hat keinen Text_frame

Einige Formen (Connectors, PictureFrames, GroupShapes) haben keinen Textrahmen. Bewahren Sie sich vor der Verwendung von “Bild” in den Formularen des Bildspielers. shape.has_text_frame() Vor dem Zugriff auf Text.


Häufig gestellte Fragen

Wird bei der Aufladung alle Originalinhalte erhalten?

Ja. Unbekannte XML-Teile werden wörtlich bei der Rundreise gespeichert. Die Bibliothek serialisiert nur die Teile des Dokumentmodells, das sie versteht, und geht durch jedes nicht erkannte XML.

Kann ich ein passwortgeschütztes PPTX laden?

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

Kann ich eingebettete Bilder extrahieren?

Zugriff auf die Bilder-Sammlung: prs.images() gibt den ImageCollection.Jedes Bild hat eine width(), height(),und . binary_data() Methode zum Lesen der Rohbilddaten.

Wird das Laden von einem In-Memory-Puffer unterstützt?

Verladen von einem std::vector<uint8_t> oder std::istream Schreiben Sie die Bytes zu einer temporären Datei, dann den Pfad an das Presentation Konstrukteur.


Siehe auch:

 Deutsch