วิธีเพิ่มคอมเมนต์ใน PowerPoint ด้วย C++
Aspose.Slides FOSS for C++ รองรับกลไกการทำหมายเหตุสองแบบ:
- Threaded comments: แนบกับสไลด์ในตำแหน่งเฉพาะ, ปรากฏในแผง Review ของ PowerPoint
- Speaker notes: ข้อความต่อสไลด์ที่มองเห็นได้ในโหมด Presenter View และแผง Notes
ข้อกำหนดเบื้องต้น
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 .เพิ่มความคิดเห็น
ความคิดเห็นเป็นของอ็อบเจ็กต์ author. สร้าง author ก่อน, จากนั้นเพิ่มความคิดเห็นผ่าน author.comments():
#include <Aspose/Slides/Foss/presentation.h>
#include <chrono>
int main() {
namespace asf = Aspose::Slides::Foss;
asf::Presentation prs;
// Create a comment author with name and initials
auto& author = prs.comment_authors().add_author("Jane Smith", "JS");
auto& slide = prs.slides()[0];
// Add a comment at position (2.0, 2.0) from the slide top-left
Aspose::Slides::Foss::Drawing::PointF pos(2.0f, 2.0f);
author.comments().add_comment(
"Please review the figures on this slide",
slide, pos, std::chrono::system_clock::now());
prs.save("commented.pptx", asf::SaveFormat::PPTX);
return 0;
}พิกัด PointF อยู่ใน นิ้ว จากมุมซ้ายบนของสไลด์. การเรียกใช้หลายครั้งไปยัง add_comment() จะสร้างสายความคิดเห็นแบบต่อเนื่องภายใต้ผู้เขียนเดียวกัน.
ผู้เขียนหลายคนและความคิดเห็น
#include <Aspose/Slides/Foss/presentation.h>
int main() {
namespace asf = Aspose::Slides::Foss;
asf::Presentation prs;
auto& author1 = prs.comment_authors().add_author("Alice Brown", "AB");
auto& author2 = prs.comment_authors().add_author("Bob Davis", "BD");
auto& slide = prs.slides()[0];
author1.comments().add_comment(
"Initial draft: needs revision",
slide, Aspose::Slides::Foss::Drawing::PointF(1.0f, 1.0f), std::chrono::system_clock::now());
author2.comments().add_comment(
"Approved after changes",
slide, Aspose::Slides::Foss::Drawing::PointF(3.0f, 1.0f), std::chrono::system_clock::now());
prs.save("multi-author.pptx", asf::SaveFormat::PPTX);
return 0;
}อ่านความคิดเห็นจากไฟล์ที่มีอยู่
#include <Aspose/Slides/Foss/presentation.h>
#include <iostream>
int main() {
namespace asf = Aspose::Slides::Foss;
asf::Presentation prs("commented.pptx");
for (size_t i = 0; i < prs.comment_authors().size(); ++i) {
auto& author = prs.comment_authors()[i];
std::cout << "Author: " << author.name()
<< " (" << author.initials() << ")\n";
for (size_t j = 0; j < author.comments().size(); ++j) {
auto& comment = author.comments()[j];
std::cout << " Slide " << comment.slide().slide_number()
<< ": " << comment.text() << "\n";
}
}
return 0;
}เพิ่มบันทึกผู้พูดลงในสไลด์
บันทึกของผู้พูดถูกเพิ่มผ่าน slide.notes_slide_manager():
#include <Aspose/Slides/Foss/presentation.h>
int main() {
namespace asf = Aspose::Slides::Foss;
asf::Presentation prs;
auto& slide = prs.slides()[0];
auto& main_shape = slide.shapes().add_auto_shape(
asf::ShapeType::RECTANGLE, 50, 50, 600, 300);
main_shape.text_frame()->set_text("Main slide content");
// Create the notes slide and write text
auto* notes = slide.notes_slide_manager().add_notes_slide();
notes->notes_text_frame().set_text(
"Mention the Q3 revenue increase. Emphasize the 24% YoY growth.");
prs.save("with-notes.pptx", asf::SaveFormat::PPTX);
return 0;
}เพิ่มบันทึกในหลายสไลด์
#include <Aspose/Slides/Foss/presentation.h>
#include <vector>
#include <string>
int main() {
namespace asf = Aspose::Slides::Foss;
std::vector<std::string> note_texts = {
"Opening: introduce the agenda and set expectations.",
"Key metrics: emphasize Q4 results and growth trajectory.",
"Closing: summarize and call to action.",
};
asf::Presentation prs;
auto& layout = prs.slides()[0].layout_slide();
prs.slides().add_empty_slide(layout);
prs.slides().add_empty_slide(layout);
for (size_t i = 0; i < prs.slides().size(); ++i) {
auto& slide = prs.slides()[i];
auto& slide_shape = slide.shapes().add_auto_shape(
asf::ShapeType::RECTANGLE, 50, 50, 600, 300);
slide_shape.text_frame()->set_text("Slide " + std::to_string(i + 1));
auto* n = slide.notes_slide_manager().add_notes_slide();
n->notes_text_frame().set_text(note_texts[i]);
}
prs.save("all-notes.pptx", asf::SaveFormat::PPTX);
return 0;
}ตรวจสอบว่าบันทึกมีอยู่แล้วหรือไม่
notes_slide_manager().notes_slide() คืนค่าตัวชี้ null หากไม่มีสไลด์บันทึกย่อถูกสร้าง:
#include <Aspose/Slides/Foss/presentation.h>
#include <iostream>
int main() {
namespace asf = Aspose::Slides::Foss;
asf::Presentation prs("existing.pptx");
for (size_t i = 0; i < prs.slides().size(); ++i) {
auto& slide = prs.slides()[i];
auto* existing = slide.notes_slide_manager().notes_slide();
if (existing) {
std::cout << "Slide " << i + 1 << ": "
<< existing->notes_text_frame().text().substr(0, 60) << "\n";
} else {
std::cout << "Slide " << i + 1 << ": no notes\n";
}
}
return 0;
}