Práce s komentáři a poznámkami přednášejícího — Aspose.Slides FOSS pro C++

Aspose.Slides FOSS for C++ supports two types of annotations: vláknové komentáře ke snímkům (viditelné v režimu revize) a poznámky přednášejícího (viditelné v režimu prezentace a v podokně Poznámky).


Vlákna komentářů

Komentáře jsou připojeny ke snímku a jsou spojeny s autorem. Tento pres.comment_authors() kolekce spravuje všechny autory; každý autor má comments() kolekci pro přidávání a čtení komentářů.

Přidat komentář

#include <Aspose/Slides/Foss/comment.h>
#include <Aspose/Slides/Foss/comment_author.h>
#include <Aspose/Slides/Foss/comment_author_collection.h>
#include <Aspose/Slides/Foss/comment_collection.h>
#include <Aspose/Slides/Foss/drawing/point_f.h>
#include <Aspose/Slides/Foss/export/save_format.h>
#include <Aspose/Slides/Foss/presentation.h>
#include <Aspose/Slides/Foss/slide.h>
#include <Aspose/Slides/Foss/slide_collection.h>

#include <chrono>

using namespace Aspose::Slides::Foss;
using namespace Aspose::Slides::Foss::Drawing;

int main() {
    Presentation pres;

    // Create a comment author with initials
    auto& author = pres.comment_authors().add_author("Jane Smith", "JS");

    auto& slide = pres.slides()[0];

    // Add a comment at position (2.0, 2.0) inches from the slide top-left
    author.comments().add_comment(
        "Please review the figures on this slide",
        slide,
        PointF(2.0f, 2.0f),
        std::chrono::system_clock::now()
    );

    pres.save("commented.pptx", SaveFormat::PPTX);
    return 0;
}

Tento PointF pozice je v palcích od levého horního rohu snímku. Více komentářů může být přidáno ke stejnému snímku voláním add_comment() znovu.

Více autorů a komentářů

#include <Aspose/Slides/Foss/comment_author.h>
#include <Aspose/Slides/Foss/comment_author_collection.h>
#include <Aspose/Slides/Foss/comment_collection.h>
#include <Aspose/Slides/Foss/drawing/point_f.h>
#include <Aspose/Slides/Foss/export/save_format.h>
#include <Aspose/Slides/Foss/presentation.h>
#include <Aspose/Slides/Foss/slide.h>
#include <Aspose/Slides/Foss/slide_collection.h>

#include <chrono>

using namespace Aspose::Slides::Foss;
using namespace Aspose::Slides::Foss::Drawing;

int main() {
    Presentation pres;
    auto& author1 = pres.comment_authors().add_author("Alice Brown", "AB");
    auto& author2 = pres.comment_authors().add_author("Bob Davis", "BD");

    auto& slide = pres.slides()[0];
    auto now = std::chrono::system_clock::now();

    author1.comments().add_comment("Initial draft", slide, PointF(1.0f, 1.0f), now);
    author2.comments().add_comment("Approved", slide, PointF(3.0f, 1.0f), now);

    pres.save("multi-author.pptx", SaveFormat::PPTX);
    return 0;
}

Číst komentáře z existujícího souboru

#include <Aspose/Slides/Foss/comment_author.h>
#include <Aspose/Slides/Foss/comment_author_collection.h>
#include <Aspose/Slides/Foss/comment.h>
#include <Aspose/Slides/Foss/comment_collection.h>
#include <Aspose/Slides/Foss/presentation.h>

#include <iostream>

using namespace Aspose::Slides::Foss;

int main() {
    Presentation pres("commented.pptx");
    for (std::size_t i = 0; i < pres.comment_authors().size(); ++i) {
        auto& author = pres.comment_authors()[i];
        std::cout << "Author: " << author.name() << " (" << author.initials() << ")" << std::endl;
        for (std::size_t j = 0; j < author.comments().size(); ++j) {
            auto& comment = author.comments()[j];
            std::cout << "  " << comment.text() << std::endl;
        }
    }
    return 0;
}

Poznámky přednášejícího

Poznámky přednášejícího jsou uloženy na úrovni jednotlivých snímků pomocí NotesSlide objektu. Přistupujte k němu přes slide.notes_slide_manager().

Přidat poznámky přednášejícího ke snímku

#include <Aspose/Slides/Foss/auto_shape.h>
#include <Aspose/Slides/Foss/export/save_format.h>
#include <Aspose/Slides/Foss/i_notes_slide.h>
#include <Aspose/Slides/Foss/i_notes_slide_manager.h>
#include <Aspose/Slides/Foss/presentation.h>
#include <Aspose/Slides/Foss/shape_collection.h>
#include <Aspose/Slides/Foss/shape_type.h>
#include <Aspose/Slides/Foss/slide.h>
#include <Aspose/Slides/Foss/slide_collection.h>
#include <Aspose/Slides/Foss/text_frame.h>

using namespace Aspose::Slides::Foss;

int main() {
    Presentation pres;
    auto& slide = pres.slides()[0];
    slide.shapes().add_auto_shape(ShapeType::RECTANGLE, 50, 50, 400, 200);

    // Create the notes slide and set text
    auto* notes = slide.notes_slide_manager().add_notes_slide();
    notes->notes_text_frame().set_text(
        "Mention the Q3 revenue increase on this slide. Emphasize the 24% growth.");

    pres.save("with-notes.pptx", SaveFormat::PPTX);
    return 0;
}

Zkontrolujte, zda již existuje snímek s poznámkami

notes_slide_manager().notes_slide() vrací nullptr pokud dosud nebyl vytvořen žádný snímek s poznámkami:

#include <Aspose/Slides/Foss/i_notes_slide.h>
#include <Aspose/Slides/Foss/i_notes_slide_manager.h>
#include <Aspose/Slides/Foss/presentation.h>
#include <Aspose/Slides/Foss/slide.h>
#include <Aspose/Slides/Foss/slide_collection.h>
#include <Aspose/Slides/Foss/text_frame.h>

#include <iostream>

using namespace Aspose::Slides::Foss;

int main() {
    Presentation pres("existing.pptx");
    for (std::size_t i = 0; i < pres.slides().size(); ++i) {
        auto* existing_notes = pres.slides()[i].notes_slide_manager().notes_slide();
        if (existing_notes) {
            auto text = existing_notes->notes_text_frame().text();
            std::cout << "Slide " << (i + 1) << " notes: " << text.substr(0, 60) << "..." << std::endl;
        } else {
            std::cout << "Slide " << (i + 1) << ": no notes" << std::endl;
        }
    }
    return 0;
}

Viz také

 Čeština