עבודה עם הערות

Aspose.Words מאפשר למשתמשים לעבוד עם הערות - הערות במסמך Aspose.Words מיוצגים על ידי Comment מעמד. השתמש גם CommentRangeStart ו CommentRangeEnd שיעורים כדי לציין את אזור הטקסט כי צריך להיות קשור עם תגובה.

הוסף תגובה

Aspose.Words מאפשר להוסיף הערות בכמה דרכים:

1.1 1. באמצעות Comment הכיתה 2. באמצעות CommentRangeStart ו CommentRangeEnd שיעורים

הדוגמה הבאה של הקוד מראה כיצד להוסיף תגובה לפסקה באמצעות הסעיף Comment קטגוריה:

// For complete examples and data files, please go to https://github.com/aspose-words/Aspose.Words-for-Java
String dataDir = Utils.getDataDir(AddComments.class);
Document doc = new Document();
DocumentBuilder builder = new DocumentBuilder(doc);
builder.write("Some text is added.");
Comment comment = new Comment(doc, "Awais Hafeez", "AH", new Date());
builder.getCurrentParagraph().appendChild(comment);
comment.getParagraphs().add(new Paragraph(doc));
comment.getFirstParagraph().getRuns().add(new Run(doc, "Comment text."));
doc.save(dataDir + "output.doc");

הדוגמה הבאה של הקוד מראה כיצד להוסיף תגובה לפסקה באמצעות אזור טקסט והטקסט CommentRangeStart ו CommentRangeEnd שיעורים:

// For complete examples and data files, please go to https://github.com/aspose-words/Aspose.Words-for-Java
String dataDir = Utils.getDataDir(AnchorComment.class);
Document doc = new Document();
Paragraph para1 = new Paragraph(doc);
Run run1 = new Run(doc, "Some ");
Run run2 = new Run(doc, "text ");
para1.appendChild(run1);
para1.appendChild(run2);
doc.getFirstSection().getBody().appendChild(para1);
Paragraph para2 = new Paragraph(doc);
Run run3 = new Run(doc, "is ");
Run run4 = new Run(doc, "added ");
para2.appendChild(run3);
para2.appendChild(run4);
doc.getFirstSection().getBody().appendChild(para2);
Comment comment = new Comment(doc, "Awais Hafeez", "AH", new Date());
comment.getParagraphs().add(new Paragraph(doc));
comment.getFirstParagraph().getRuns().add(new Run(doc, "Comment text."));
CommentRangeStart commentRangeStart = new CommentRangeStart(doc, comment.getId());
CommentRangeEnd commentRangeEnd = new CommentRangeEnd(doc, comment.getId());
run1.getParentNode().insertAfter(commentRangeStart, run1);
run3.getParentNode().insertAfter(commentRangeEnd, run3);
commentRangeEnd.getParentNode().insertAfter(comment, commentRangeEnd);
doc.save(dataDir + "output.doc");

הסרת הערות או הסרת הערות

שימוש בהערות במסמך Word (בנוסף לשינויים במעקב) הוא מנהג נפוץ בעת בדיקת מסמכים, במיוחד כאשר ישנם מספר סוקרים. יש מצבים שבהם הדבר היחיד שאתה צריך במסמך הוא התגובות. נניח שאתה רוצה ליצור רשימה של ממצאי ביקורת, או אולי אספת את כל המידע השימושי של המסמך ואתה פשוט רוצה להסיר הערות מיותרות. ייתכן שתרצה להציג או להסיר הערות של מבקר מסוים.

בדגימה זו, אנו הולכים לבחון כמה שיטות פשוטות עבור איסוף מידע מההערות בתוך מסמך ועל הסרת הערות ממסמכים. באופן ספציפי, אנו נעמוד כיצד:

  • הוציאו את כל התגובות של מסמך או רק את אלה שנעשו על ידי מחבר מסוים.
  • להסיר את כל ההערות של מסמך או רק ממחבר מסוים.

כיצד להסיר או להסיר הערות

הקוד במדגם זה הוא די פשוט וכל השיטות מבוססות על אותה גישה. תגובה במסמך Word מיוצגת על ידי Comment אובייקט Aspose.Words מסמך מודל אובייקט כדי לאסוף את כל ההערות במסמך להשתמש getChildNodes שיטה עם הפרמטר הראשון להגדיר NodeType.Comment. ודא כי הפרמטר השני של עקבו אחריChild Nodes השיטה מיועדת trueכוחות אלה עקבו אחריChild Nodes כדי לבחור מכל בלוטות הילד, במקום לאסוף רק את הילדים המיידיים.

כדי להמחיש כיצד לחלץ ולהסיר הערות ממסמכים, אנו עוברים את השלבים הבאים:

1.1 1. פתח מסמך Word באמצעות Document הכיתה 1.1 1. קבלו את כל התגובות מהמסמכים לאוסף 1.1 1. להוציא הערות: 1 לעבור את האוסף באמצעות המפעיל 1 לחלץ ולרשום את שם המחבר, תאריך וזמן וטקסט של כל הערות 1 לחלץ ולרשום את שם המחבר, תאריך וזמן וטקסט של הערות שנכתבו על ידי מחבר ספציפי, במקרה זה, המחבר “ks” 1.1 1. להסיר הערות: 1 הפוך דרך האוסף באמצעות המפעיל

  1. Remove הערות 1.1 1. להציל את השינויים

אנו הולכים להשתמש במסמך Word הבא עבור התרגיל הזה:

extract-remove-comments-aspose-words-java-1

כפי שאתה יכול לראות, הוא מכיל כמה הערות משני מחברים עם הראשונים “pm” ו “ks”.

כיצד להפיק את כל התגובות

The The The getChildNodes שיטה היא מאוד שימושית ואתה יכול להשתמש בה בכל פעם שאתה צריך לקבל רשימה של דפי מסמך מכל סוג. האוסף המתקבל אינו יוצר כותרת מיידית, כי הצמתים נבחרים לתוך אוסף זה רק כאשר אתה אוכל או גישה פריטים בו.

דוגמה הקוד הבא מראה כיצד לחלץ את שם המחבר, תאריך וטקסט של כל התגובות במסמך:

// For complete examples and data files, please go to https://github.com/aspose-words/Aspose.Words-for-Java
ArrayList collectedComments = new ArrayList();
// Collect all comments in the document
NodeCollection comments = doc.getChildNodes(NodeType.COMMENT, true);
// Look through all comments and gather information about them.
for (Comment comment : (Iterable<Comment>) comments) {
collectedComments.add(comment.getAuthor() + " " + comment.getDateTime() + " " + comment.toString(SaveFormat.TEXT));
}
return collectedComments;

כיצד להפיק הערות של מחבר ספציפי

לאחר שבחרת צומת הערה לתוך אוסף, כל שעליך לעשות הוא לחלץ את המידע שאתה צריך. במדגם זה, ראשוניות המחבר, תאריך, זמן וטקסט רגיל של ההערה משולב לתוך מיתר אחד; אתה יכול לבחור לאחסן אותו בכמה דרכים אחרות במקום.

השיטה המוגברת שמוציאה את ההערות של מחבר מסוים כמעט זהה, היא רק בודקת את שם המחבר לפני הוספת המידע למערך.

הדוגמה הבאה של הקוד מראה כיצד לחלץ את שם המחבר, תאריך וטקסט של ההערות של המחבר שצוין:

// For complete examples and data files, please go to https://github.com/aspose-words/Aspose.Words-for-Java
ArrayList collectedComments = new ArrayList();
// Collect all comments in the document
NodeCollection comments = doc.getChildNodes(NodeType.COMMENT, true);
// Look through all comments and gather information about those written by the authorName author.
for (Comment comment : (Iterable<Comment>) comments) {
if (comment.getAuthor().equals(authorName))
collectedComments.add(comment.getAuthor() + " " + comment.getDateTime() + " " + comment.toString(SaveFormat.TEXT));
}
return collectedComments;

כיצד להסיר הערות

אם אתה מסיר את כל ההערות, אין צורך לעבור דרך הקולקציה המסלקת הערות אחד על ידי אחד; אתה יכול להסיר אותם על ידי קריאה clear על אוסף התגובות

הדוגמה הבאה של הקוד מראה כיצד להסיר את כל התגובות במסמך:

// For complete examples and data files, please go to https://github.com/aspose-words/Aspose.Words-for-Java
// Collect all comments in the document
NodeCollection comments = doc.getChildNodes(NodeType.COMMENT, true);
// Remove all comments.
comments.clear();

כאשר אתה צריך להסיר הערות באופן סלקטיבי, התהליך הופך להיות דומה יותר לקוד שבו השתמשנו למיצוי תגובה.

הדוגמה הבאה של הקוד מראה כיצד להסיר הערות של המחבר שצוין:

// For complete examples and data files, please go to https://github.com/aspose-words/Aspose.Words-for-Java
// Collect all comments in the document
NodeCollection comments = doc.getChildNodes(NodeType.COMMENT, true);
// Look through all comments and remove those written by the authorName author.
for (int i = comments.getCount() - 1; i >= 0; i--) {
Comment comment = (Comment) comments.get(i);
if (comment.getAuthor().equals(authorName))
comment.remove();
}
}

הנקודה העיקרית להדגיש כאן היא השימוש במפעיל. בניגוד למיצוי הפשוט, אתם רוצים למחוק תגובה. טריק מתאים הוא להפוך את האוסף לאחור מההערה האחרונה לראשון. הסיבה לכך אם אתה מתחיל מן הסוף והזיז לאחור, המדד של הפריטים הקודמים נשאר ללא שינוי, ואתה יכול לעבוד את דרכך חזרה אל הפריט הראשון באוסף.

הדוגמה הקודית הבאה מציגה את שיטות החילוץ וההסרה של הערות:

// For complete examples and data files, please go to https://github.com/aspose-words/Aspose.Words-for-Java
// The path to the documents directory.
String dataDir = Utils.getDataDir(ProcessComments.class);
// Open the document.
Document doc = new Document(dataDir + "TestFile.doc");
for (String comment : (Iterable<String>) extractComments(doc))
System.out.print(comment);
// Remove comments by the "pm" author.
removeComments(doc, "pm");
System.out.println("Comments from \"pm\" are removed!");
// Extract the information about the comments of the "ks" author.
for (String comment : (Iterable<String>) extractComments(doc, "ks"))
System.out.print(comment);
//Read the comment's reply and resolve them.
System.out.println("Read the comment's reply and resolve them.");
CommentResolvedandReplies(doc);
// Remove all comments.
removeComments(doc);
System.out.println("All comments are removed!");
// Save the document.
doc.save(dataDir + "output.doc");

כאשר הושק, הדגימה מציגה את התוצאות הבאות. ראשית, היא מציינת את כל התגובות של כל הכותבים, ואז היא מציינת הערות של המחבר הנבחר בלבד. לבסוף, הקוד מסיר את כל התגובות.

extract-remove-comments-aspose-words-java-2

מסמך הפלט Word הוסר ממנו כעת:

extract-remove-comments-aspose-words-java-3

כיצד להסיר טקסט בין CommentRangeStart ו- CommentRange End

שימוש Aspose.Words אתה יכול גם להסיר הערות בין הערהRangeStart והערהRange End nodes.

הדוגמה הבאה של הקוד מראה כיצד להסיר טקסט בין CommentRangeStart ו- CommentRange End:

// For complete examples and data files, please go to https://github.com/aspose-words/Aspose.Words-for-Java
// The path to the documents directory.
String dataDir = Utils.getDataDir(RemoveCommentRegionText.class);
// Open the document.
Document doc = new Document(dataDir + "TestFile.doc");
CommentRangeStart commentStart = (CommentRangeStart) doc.getChild(NodeType.COMMENT_RANGE_START, 0, true);
CommentRangeEnd commentEnd = (CommentRangeEnd) doc.getChild(NodeType.COMMENT_RANGE_END, 0, true);
Node currentNode = commentStart;
Boolean isRemoving = true;
while (currentNode != null && isRemoving) {
if (currentNode.getNodeType() == NodeType.COMMENT_RANGE_END)
isRemoving = false;
Node nextNode = currentNode.nextPreOrder(doc);
currentNode.remove();
currentNode = nextNode;
}
doc.save(dataDir + "output.doc");

הוסף או להסיר תגובה

The The The addReply השיטה מוסיפה תשובה להערה זו. אנא שימו לב כי בשל מגבלות ה-MS Office הקיימות רק רמה אחת (1) של תשובות מותר במסמך. יוצא דופן מסוג Invalid Operation Exception יעלה אם שיטה זו נקראת על התגובה הקיימת.

אתה יכול להשתמש removeReply שיטה להסיר את התשובה המפורטת להערה זו.

הדוגמה הבאה של הקוד מראה כיצד להוסיף תשובה להערה ולהסיר תגובה:

// For complete examples and data files, please go to https://github.com/aspose-words/Aspose.Words-for-Java
Document doc = new Document(dataDir + "TestFile.doc");
Comment comment = (Comment) doc.getChild(NodeType.COMMENT, 0, true);
//Remove the reply
comment.removeReply(comment.getReplies().get(0));
//Add a reply to comment
comment.addReply("John Doe", "JD", new Date(), "New reply");
dataDir = dataDir + "TestFile_Out.doc";
// Save the document to disk.
doc.save(dataDir);

תגובה

Aspose.Words תמיכה לקרוא את התשובה של הערה. The The The Replies הנכס מחזיר אוסף של Comment פריטים שהם ילדים מיידיים של התגובה המפורטת.

הדוגמה הבאה של הקוד מראה כיצד לתקן באמצעות תשובות של תגובה ופתירתם:

// For complete examples and data files, please go to https://github.com/aspose-words/Aspose.Words-for-Java
static void CommentResolvedandReplies(Document doc) {
NodeCollection<Comment> comments = doc.getChildNodes(NodeType.COMMENT, true);
Comment parentComment = (Comment) comments.get(0);
for (Comment childComment : parentComment.getReplies()) {
// Get comment parent and status.
System.out.println(childComment.getAncestor().getId());
System.out.println(childComment.getDone());
// And update comment Done mark.
childComment.setDone(true);
}
}