댓글 및 발표자 메모 작업 — Aspose.Slides FOSS for Java
Aspose.Slides FOSS for Java supports two types of annotations: 스레드형 슬라이드 댓글 (검토 모드에서 표시됨) 및 발표자 메모 (프레젠터 보기와 메모 창에서 표시됨).
스레드형 댓글
댓글은 슬라이드에 첨부되고 작성자와 연결됩니다. 그 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 위치는 슬라이드의 왼쪽 위 모서리에서 인치 단위로 측정됩니다. 동일한 슬라이드에 여러 댓글을 추가하려면 호출하여 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);
}