کار با نظرات و یادداشتهای سخنران — Aspose.Slides FOSS برای جاوا
Aspose.Slides FOSS for Java دو نوع حاشیهنویسی را پشتیبانی میکند: threaded slide comments (قابل مشاهده در حالت بازبینی) و speaker notes (قابل مشاهده در نمای ارائهدهنده و پنل یادداشتها).
نظرات زنجیرهای
نظرات به یک اسلاید پیوست میشوند و با یک نویسنده مرتبط هستند. مجموعه prs.getCommentAuthors() تمام نویسندگان را مدیریت میکند؛ هر نویسنده یک مجموعه getComments() برای افزودن و خواندن نظرات دارد.
افزودن نظر
import org.aspose.slides.foss.Presentation;
import org.aspose.slides.foss.drawing.PointF;
import org.aspose.slides.foss.export.SaveFormat;
import java.time.LocalDateTime;
try (Presentation prs = new Presentation()) {
// Create a comment author with initials
var author = prs.getCommentAuthors().addAuthor("Jane Smith", "JS");
var slide = prs.getSlides().get(0);
// Add a comment at position (2.0, 2.0) centimeters from the slide top-left
author.getComments().addComment(
"Please review the figures on this slide",
slide,
new PointF(2.0f, 2.0f),
LocalDateTime.now()
);
prs.save("commented.pptx", SaveFormat.PPTX);
}موقعیت PointF بر حسب سانتیمتر از گوشهٔ بالا‑چپ اسلاید است (بهصورت داخلی بهصورت EMU ذخیره میشود؛ 1 سانتیمتر = ۳۶۰٬۰۰۰ EMU). میتوان چندین نظر را به همان اسلاید اضافه کرد با فراخوانی دوباره addComment().
نویسندگان متعدد و نظرات
import org.aspose.slides.foss.Presentation;
import org.aspose.slides.foss.drawing.PointF;
import org.aspose.slides.foss.export.SaveFormat;
import java.time.LocalDateTime;
try (Presentation prs = new Presentation()) {
var author1 = prs.getCommentAuthors().addAuthor("Alice Brown", "AB");
var author2 = prs.getCommentAuthors().addAuthor("Bob Davis", "BD");
var slide = prs.getSlides().get(0);
author1.getComments().addComment("Initial draft", slide, new PointF(1.0f, 1.0f), LocalDateTime.now());
author2.getComments().addComment("Approved", slide, new PointF(3.0f, 1.0f), LocalDateTime.now());
prs.save("multi-author.pptx", SaveFormat.PPTX);
}خواندن نظرات از یک فایل موجود
import org.aspose.slides.foss.Presentation;
try (Presentation prs = new Presentation("commented.pptx")) {
for (int a = 0; a < prs.getCommentAuthors().size(); a++) {
var author = prs.getCommentAuthors().get(a);
System.out.println("Author: " + author.getName() + " (" + author.getInitials() + ")");
for (int c = 0; c < author.getComments().size(); c++) {
var comment = author.getComments().get(c);
System.out.println(" " + comment.getText());
}
}
}یادداشتهای سخنران
یادداشتهای سخنران بهصورت جداگانه برای هر اسلاید از طریق یک شیء NotesSlide ذخیره میشوند. از طریق slide.getNotesSlideManager() به آن دسترسی پیدا کنید.
افزودن یادداشتهای سخنران به یک اسلاید
import org.aspose.slides.foss.Presentation;
import org.aspose.slides.foss.ShapeType;
import org.aspose.slides.foss.export.SaveFormat;
try (Presentation prs = new Presentation()) {
var slide = prs.getSlides().get(0);
slide.getShapes().addAutoShape(ShapeType.RECTANGLE, 50, 50, 400, 200);
// Create the notes slide and set text
var notes = slide.getNotesSlideManager().addNotesSlide();
notes.getNotesTextFrame().setText(
"Mention the Q3 revenue increase on this slide. Emphasize the 24% growth."
);
prs.save("with-notes.pptx", SaveFormat.PPTX);
}مثال یادداشتهای ساده
import org.aspose.slides.foss.Presentation;
import org.aspose.slides.foss.ShapeType;
import org.aspose.slides.foss.export.SaveFormat;
try (Presentation prs = new Presentation()) {
var slide = prs.getSlides().get(0);
slide.getShapes().addAutoShape(ShapeType.RECTANGLE, 100, 100, 500, 250)
.addTextFrame("Main Content");
var notes = slide.getNotesSlideManager().addNotesSlide();
notes.getNotesTextFrame().setText("These are the speaker notes for this slide.");
prs.save("notes.pptx", SaveFormat.PPTX);
}بررسی اینکه آیا یک اسلاید یادداشتها قبلاً وجود دارد یا خیر
getNotesSlideManager().getNotesSlide() در صورتی که هنوز اسلاید یادداشتها ایجاد نشده باشد، null را برمیگرداند:
import org.aspose.slides.foss.Presentation;
try (Presentation prs = new Presentation("existing.pptx")) {
for (int i = 0; i < prs.getSlides().size(); i++) {
var slide = prs.getSlides().get(i);
var existingNotes = slide.getNotesSlideManager().getNotesSlide();
if (existingNotes != null) {
String text = existingNotes.getNotesTextFrame().getText();
System.out.println("Slide " + (i + 1) + " notes: " + text);
} else {
System.out.println("Slide " + (i + 1) + ": no notes");
}
}
}افزودن یادداشتها به چندین اسلاید
import org.aspose.slides.foss.Presentation;
import org.aspose.slides.foss.ShapeType;
import org.aspose.slides.foss.export.SaveFormat;
String[] noteTexts = {
"Opening remarks: introduce the agenda.",
"Key metrics: emphasize Q4 results.",
"Closing: call to action.",
};
try (Presentation prs = new Presentation()) {
// Add slides 2 and 3
var layout = prs.getSlides().get(0).getLayoutSlide();
prs.getSlides().addEmptySlide(layout);
prs.getSlides().addEmptySlide(layout);
for (int i = 0; i < prs.getSlides().size(); i++) {
var slide = prs.getSlides().get(i);
slide.getShapes().addAutoShape(ShapeType.RECTANGLE, 50, 50, 600, 300)
.addTextFrame("Slide " + (i + 1));
var n = slide.getNotesSlideManager().addNotesSlide();
n.getNotesTextFrame().setText(noteTexts[i]);
}
prs.save("all-notes.pptx", SaveFormat.PPTX);
}