Kelola Komentar Presentasi di Java
Gambaran Umum
Artikel ini menjelaskan cara mengelola komentar presentasi di Aspose.Slides. Artikel ini menampilkan jenis-jenis utama yang terkait dengan komentar dan menunjukkan cara menambahkan komentar ke slide, mengakses komentar yang ada, bekerja dengan balasan, menggunakan komentar modern, dan menghapus komentar dari sebuah presentasi.
Contoh-contoh berfokus pada skenario peninjauan dan kolaborasi umum di PowerPoint, seperti menetapkan komentar kepada penulis, membaca isi dan metadata komentar, membangun rantai balasan, serta menghapus semua komentar atau menghapus komentar yang dipilih.
Di PowerPoint, komentar muncul sebagai catatan atau anotasi pada slide. Ketika komentar diklik, isinya atau pesannya akan ditampilkan.
Mengapa Menambahkan Komentar ke Presentasi?
Bisa jadi Anda ingin menggunakan komentar untuk memberikan umpan balik atau berkomunikasi dengan rekan kerja saat meninjau presentasi.
Untuk memungkinkan Anda menggunakan komentar dalam presentasi PowerPoint, Aspose.Slides for Java menyediakan
- Kelas Presentation yang berisi koleksi penulis (dari antarmuka ICommentAuthorCollection ). Penulis menambahkan komentar ke slide.
- Antarmuka ICommentCollection yang berisi koleksi komentar untuk setiap penulis.
- Kelas IComment yang berisi informasi tentang penulis dan komentar mereka: siapa yang menambahkan komentar, waktu komentar ditambahkan, posisi komentar, dll.
- Kelas CommentAuthor yang berisi informasi tentang masing-masing penulis: nama penulis, inisialnya, komentar yang terkait dengan nama penulis, dll.
Menambahkan Komentar Slide
Kode Java berikut menunjukkan cara menambahkan komentar ke slide dalam presentasi PowerPoint:
// Menginstansiasi kelas Presentation
Presentation pres = new Presentation();
try {
// Menambahkan slide kosong
pres.getSlides().addEmptySlide(pres.getLayoutSlides().get_Item(0));
// Menambahkan penulis
ICommentAuthor author = pres.getCommentAuthors().addAuthor("Jawad", "MF");
// Mengatur posisi untuk komentar
Point2D.Float point = new Point2D.Float(0.2f, 0.2f);
// Menambahkan komentar slide untuk penulis pada slide 1
author.getComments().addComment("Hello Jawad, this is slide comment", pres.getSlides().get_Item(0), point, new Date());
// Menambahkan komentar slide untuk penulis pada slide 2
author.getComments().addComment("Hello Jawad, this is second slide comment", pres.getSlides().get_Item(1), point, new Date());
// Mengakses ISlide 1
ISlide slide = pres.getSlides().get_Item(0);
// Ketika null diberikan sebagai argumen, komentar dari semua penulis dibawa ke slide yang dipilih
IComment[] Comments = slide.getSlideComments(author);
// Mengakses komentar pada indeks 0 untuk slide 1
String str = Comments[0].getText();
pres.save("Comments_out.pptx", SaveFormat.Pptx);
if (Comments.length > 0)
{
// Memilih koleksi komentar Penulis pada indeks 0
ICommentCollection commentCollection = Comments[0].getAuthor().getComments();
String Comment = commentCollection.get_Item(0).getText();
}
} finally {
if (pres != null) pres.dispose();
}
Mengakses Komentar Slide
Kode Java berikut menunjukkan cara mengakses komentar yang ada pada slide dalam presentasi PowerPoint:
// Membuat instance kelas Presentation
Presentation pres = new Presentation("Comments1.pptx");
try {
for (ICommentAuthor commentAuthor : pres.getCommentAuthors())
{
CommentAuthor author = (CommentAuthor) commentAuthor;
for (IComment comment1 : author.getComments())
{
Comment comment = (Comment) comment1;
System.out.println("ISlide :" + comment.getSlide().getSlideNumber() + " has comment: " + comment.getText() +
" with Author: " + comment.getAuthor().getName() + " posted on time :" + comment.getCreatedTime() + "\n");
}
}
} finally {
if (pres != null) pres.dispose();
}
Membalas Komentar
Komentar induk adalah komentar utama atau asli dalam hierarki komentar atau balasan. Dengan menggunakan metode getParentComment atau setParentComment (dari antarmuka IComment), Anda dapat mengatur atau mengambil komentar induk.
Kode Java berikut menunjukkan cara menambahkan komentar dan mendapatkan balasannya:
Presentation pres = new Presentation();
try {
// Menambahkan komentar
ICommentAuthor author1 = pres.getCommentAuthors().addAuthor("Author_1", "A.A.");
IComment comment1 = author1.getComments().addComment("comment1", pres.getSlides().get_Item(0), new Point2D.Float(10, 10), new Date());
// Menambahkan balasan untuk comment1
ICommentAuthor author2 = pres.getCommentAuthors().addAuthor("Autror_2", "B.B.");
IComment reply1 = author2.getComments().addComment("reply 1 for comment 1", pres.getSlides().get_Item(0), new Point2D.Float(10, 10), new Date());
reply1.setParentComment(comment1);
// Menambahkan balasan lain untuk comment1
IComment reply2 = author2.getComments().addComment("reply 2 for comment 1", pres.getSlides().get_Item(0), new Point2D.Float(10, 10), new Date());
reply2.setParentComment(comment1);
// Menambahkan balasan ke balasan yang sudah ada
IComment subReply = author1.getComments().addComment("subreply 3 for reply 2", pres.getSlides().get_Item(0), new Point2D.Float(10, 10), new Date());
subReply.setParentComment(reply2);
IComment comment2 = author2.getComments().addComment("comment 2", pres.getSlides().get_Item(0), new Point2D.Float(10, 10), new Date());
IComment comment3 = author2.getComments().addComment("comment 3", pres.getSlides().get_Item(0), new Point2D.Float(10, 10), new Date());
IComment reply3 = author1.getComments().addComment("reply 4 for comment 3", pres.getSlides().get_Item(0), new Point2D.Float(10, 10), new Date());
reply3.setParentComment(comment3);
// Menampilkan hierarki komentar di konsol
ISlide slide = pres.getSlides().get_Item(0);
IComment[] comments = slide.getSlideComments(null);
for (int i = 0; i < comments.length; i++)
{
IComment comment = comments[i];
while (comment.getParentComment() != null)
{
System.out.print("\t");
comment = comment.getParentComment();
}
System.out.println(comments[i].getAuthor().getName() + " : " + comments[i].getText());
System.out.println();
}
pres.save("parent_comment.pptx",SaveFormat.Pptx);
// Menghapus comment1 dan semua balasannya
comment1.remove();
pres.save("remove_comment.pptx",SaveFormat.Pptx);
} finally {
if (pres != null) pres.dispose();
}
Attention
- Ketika metode Remove (dari antarmuka IComment) digunakan untuk menghapus komentar, balasan terhadap komentar tersebut juga akan dihapus.
- Jika pengaturan setParentComment menghasilkan referensi melingkar, PptxEditException akan dilempar.
Menambahkan Komentar Modern
Pada tahun 2021, Microsoft memperkenalkan komentar modern di PowerPoint. Fitur komentar modern secara signifikan meningkatkan kolaborasi di PowerPoint. Melalui komentar modern, pengguna PowerPoint dapat menyelesaikan komentar, menambatkan komentar pada objek dan teks, serta berinteraksi jauh lebih mudah daripada sebelumnya.
Pada Aspose Slides for Java 21.11, kami menambahkan dukungan untuk komentar modern dengan menambahkan kelas ModernComment. Metode addModernComment dan insertModernComment ditambahkan ke kelas CommentCollection.
Kode Java berikut menunjukkan cara menambahkan komentar modern ke slide dalam presentasi PowerPoint:
Presentation pres = new Presentation();
try {
ICommentAuthor newAuthor = pres.getCommentAuthors().addAuthor("Some Author", "SA");
IModernComment modernComment = newAuthor.getComments().addModernComment("This is a modern comment", pres.getSlides().get_Item(0), null, new Point2D.Float(100, 100), new Date());
pres.save("pres.pptx", SaveFormat.Pptx);
} finally {
if (pres != null) pres.dispose();
}
Menghapus Komentar
Menghapus Semua Komentar dan Penulis
Kode Java berikut menunjukkan cara menghapus semua komentar dan penulis dalam sebuah presentasi:
Presentation presentation = new Presentation("example.pptx");
try {
// Menghapus semua komentar dari presentasi
for (ICommentAuthor author : presentation.getCommentAuthors())
{
author.getComments().clear();
}
// Menghapus semua penulis
presentation.getCommentAuthors().clear();
presentation.save("example_out.pptx", SaveFormat.Pptx);
} finally {
if (presentation != null) presentation.dispose();
}
Menghapus Komentar Tertentu
Kode Java berikut menunjukkan cara menghapus komentar tertentu pada slide:
Presentation presentation = new Presentation();
try {
ISlide slide = presentation.getSlides().get_Item(0);
// menambahkan komentar...
ICommentAuthor author = presentation.getCommentAuthors().addAuthor("Author", "A");
author.getComments().addComment("comment 1", slide, new Point2D.Float(0.2f, 0.2f), new Date());
author.getComments().addComment("comment 2", slide, new Point2D.Float(0.3f, 0.2f), new Date());
// menghapus semua komentar yang berisi teks "comment 1"
for (ICommentAuthor commentAuthor : presentation.getCommentAuthors())
{
ArrayList<IComment> toRemove = new ArrayList<IComment>();
for (IComment comment : slide.getSlideComments(commentAuthor))
{
if (comment.getText().equals("comment 1"))
{
toRemove.add(comment);
}
}
for (IComment comment : toRemove)
{
commentAuthor.getComments().remove(comment);
}
}
presentation.save("pres.pptx", SaveFormat.Pptx);
} finally {
if (presentation != null) presentation.dispose();
}
FAQ
Apakah Aspose.Slides mendukung status seperti ‘resolved’ untuk komentar modern?
Ya. Modern comments menyediakan metode setStatus; Anda dapat menulis status komentar (misalnya menandainya sebagai resolved), dan status ini disimpan dalam file serta dikenali oleh PowerPoint.
Apakah diskusi berutas (rantai balasan) didukung, dan apakah ada batas kedalaman?
Ya. Setiap komentar dapat merujuk ke parent comment, memungkinkan rantai balasan secara arbitrer. API tidak menyatakan batas kedalaman nesting tertentu.
Dalam sistem koordinat apa posisi penanda komentar didefinisikan pada slide?
Posisi disimpan sebagai titik floating-point dalam sistem koordinat slide. Ini memungkinkan Anda menempatkan penanda komentar dengan tepat di lokasi yang diinginkan.