Зміни відстеження в документі
Функціональність зміни треків, також відомий як перегляд, дозволяє відстежувати зміни контенту та форматування, внесені вами або іншими користувачами. Ця функція зміни доріжки з Aspose.Words підтримує зміни треків Microsoft Wordй З цією функціональністю ви можете отримати доступ до індивідуальних джерел у вашому документі та застосувати різні властивості до них.
Коли ви ввімкнете функцію зміни треку, всі вставлені, видалені та модифіковані елементи документа будуть візуально висвітлені з інформацією про кого, коли, і що було змінено. Об’єкти, які здійснюють інформацію про те, що було змінено, називаються “відстеження змін”. Наприклад, припустимо, що ви хочете переглянути документ і зробити важливі зміни – це може означати, що вам потрібно зробити версії. Також можна вставити коментарі для обговорення деяких змін. Що таке зміна документів.
Ця стаття пояснює, як керувати та відстежувати зміни, створені багатьма рецензентами на одному документі, а також властивості для зміни відстеження.
Що таке версія
Перед тим як дайвінг в ревізії, пояснимо значення ревізій. Р revision є зміною, яка виникає в одному вершині документа, в той час як група ревізій, представлена групою RevisionGroup клас є групою послідовних версій, які відбуваються в багатьох вузлах документа. В основному версія є інструментом відстеження змін.
Ревізії використовуються в функціях зміни відстеження і в межах функції порівняння документів, де з’являються ревізії в результаті порівняння. Таким чином, ревізії в межах функції відстеження показують, хто і що було змінено.
Aspose.Words підтримує різні типи версій, а також у Microsoft Word, такі як введення, видалення, формат Зміна, StyleDefinition Зміна та переміщення. Всі типи редакцій представлені з RevisionType заохочення.
Почати і Зупинити відстежити зміни
Редагування документа, як правило, не рахується як ревізія, доки ви починаєте його відстеження. Aspose.Words дозволяє автоматично відстежувати всі зміни вашого документа простими кроками. Ви можете легко почати процес зміни відстеження за допомогою StartTrackRevisions метод. Якщо необхідно зупинити процес зміни відстеження, щоб будь-які майбутні редагування не розглядалися доопрацюваннями, вам потрібно буде використовувати StopTrackRevisions метод.
StartTrackingRevisions
метод не змінює статус TrackRevisions майно і не використовувати його значення для відстеження відправлень. Крім того, якщо вершина була перенесена з одного місця в інший всередині трекового документа, то буде створено переадресацію, в тому числі пересуватися і перемістити діапазон.
В кінці процесу зміни відстеження у вашому документі ви зможете навіть прийняти всі версії або відхилити їх, щоб перевернути документ до початкової форми. Це може бути досягнуто шляхом використання AcceptAllRevisions або RejectAll метод. Крім того, ви можете прийняти або відхилити кожну версію окремо, використовуючи Accept або Reject метод.
Всі зміни будуть відслідковуватися для однієї ітерації з моменту, коли ви починаєте процес до моменту його зупинки. З’єднання між різними ітераціями представлена наступним сценарієм: ви завершите процес відстеження, після чого зробіть деякі зміни, і знову запустіть зміни відстеження. З цим сценарієм всі зміни, які ви не прийняли або відхилятимуться знову.
AcceptAllRevisions
метод схожий на “приймання всіх змін” Microsoft Wordй
Приклад коду показує, як працювати з змінами відстеження:
// For complete examples and data files, please go to https://github.com/aspose-words/Aspose.Words-for-.NET | |
Document doc = new Document(); | |
Body body = doc.FirstSection.Body; | |
Paragraph para = body.FirstParagraph; | |
// Add text to the first paragraph, then add two more paragraphs. | |
para.AppendChild(new Run(doc, "Paragraph 1. ")); | |
body.AppendParagraph("Paragraph 2. "); | |
body.AppendParagraph("Paragraph 3. "); | |
// We have three paragraphs, none of which registered as any type of revision | |
// If we add/remove any content in the document while tracking revisions, | |
// they will be displayed as such in the document and can be accepted/rejected. | |
doc.StartTrackRevisions("John Doe", DateTime.Now); | |
// This paragraph is a revision and will have the according "IsInsertRevision" flag set. | |
para = body.AppendParagraph("Paragraph 4. "); | |
Assert.True(para.IsInsertRevision); | |
// Get the document's paragraph collection and remove a paragraph. | |
ParagraphCollection paragraphs = body.Paragraphs; | |
Assert.AreEqual(4, paragraphs.Count); | |
para = paragraphs[2]; | |
para.Remove(); | |
// Since we are tracking revisions, the paragraph still exists in the document, will have the "IsDeleteRevision" set | |
// and will be displayed as a revision in Microsoft Word, until we accept or reject all revisions. | |
Assert.AreEqual(4, paragraphs.Count); | |
Assert.True(para.IsDeleteRevision); | |
// The delete revision paragraph is removed once we accept changes. | |
doc.AcceptAllRevisions(); | |
Assert.AreEqual(3, paragraphs.Count); | |
Assert.That(para, Is.Empty); | |
// Stopping the tracking of revisions makes this text appear as normal text. | |
// Revisions are not counted when the document is changed. | |
doc.StopTrackRevisions(); | |
// Save the document. | |
doc.Save(ArtifactsDir + "WorkingWithRevisions.AcceptRevisions.docx"); |
Приклад наступного коду показує, як генеруються версії, коли вузол переміщається в межах відстежуваного документа:
// For complete examples and data files, please go to https://github.com/aspose-words/Aspose.Words-for-.NET | |
Document doc = new Document(); | |
DocumentBuilder builder = new DocumentBuilder(doc); | |
builder.Writeln("Paragraph 1"); | |
builder.Writeln("Paragraph 2"); | |
builder.Writeln("Paragraph 3"); | |
builder.Writeln("Paragraph 4"); | |
builder.Writeln("Paragraph 5"); | |
builder.Writeln("Paragraph 6"); | |
Body body = doc.FirstSection.Body; | |
Console.WriteLine("Paragraph count: {0}", body.Paragraphs.Count); | |
// Start tracking revisions. | |
doc.StartTrackRevisions("Author", new DateTime(2020, 12, 23, 14, 0, 0)); | |
// Generate revisions when moving a node from one location to another. | |
Node node = body.Paragraphs[3]; | |
Node endNode = body.Paragraphs[5].NextSibling; | |
Node referenceNode = body.Paragraphs[0]; | |
while (node != endNode) | |
{ | |
Node nextNode = node.NextSibling; | |
body.InsertBefore(node, referenceNode); | |
node = nextNode; | |
} | |
// Stop the process of tracking revisions. | |
doc.StopTrackRevisions(); | |
// There are 3 additional paragraphs in the move-from range. | |
Console.WriteLine("Paragraph count: {0}", body.Paragraphs.Count); | |
doc.Save(ArtifactsDir + "WorkingWithRevisions.MoveNodeInTrackedDocument.docx"); |
Управління та зміна магазинів як версії
З попередньою функцією відстеження можна зрозуміти, які зміни були внесені в документ, і які зробили ці зміни. Під час TrackRevisions Функція, ви змусите будь-які зміни у вашому документі, щоб зберігатися як версії.
Aspose.Words дозволяє перевірити, чи має документ дооопрацювати або не використовуючи HasRevision майно. Якщо вам не потрібно автоматично відстежити зміни у вашому документі через методи StartTrackRevisions та StopTrackRevisions, то ви можете використовувати TrackRevisions
Можливість перевірити, чи слідуються зміни під час редагування документа Microsoft Word і зберігаються в якості ревізій.
Про нас TrackRevisions
функція робить ревізії замість реальних DOM зміни. Але самі ревізії окремі. Наприклад, Якщо видалити будь-який пункт, Aspose.Words зробити його як ревізію, розмітивши її як видалення, замість його видалення.
Додатково Aspose.Words дозволяє перевірити, чи вводиться об’єкт, видалений або змінений форматування за допомогою IsDeleteRevision, IsFormatRevision, IsInsertRevision, IsMoveFromRevision, і IsMoveToRevision властивості.
TrackRevisions
майно. Крім того, ви можете прийняти/відновити версії незалежно від функції зміни відстеження.
Приклад коду показує, як застосувати різні властивості з ревізійами:
// For complete examples and data files, please go to https://github.com/aspose-words/Aspose.Words-for-.NET | |
Document doc = new Document(); | |
// Insert an inline shape without tracking revisions. | |
Assert.False(doc.TrackRevisions); | |
Shape shape = new Shape(doc, ShapeType.Cube); | |
shape.WrapType = WrapType.Inline; | |
shape.Width = 100.0; | |
shape.Height = 100.0; | |
doc.FirstSection.Body.FirstParagraph.AppendChild(shape); | |
// Start tracking revisions and then insert another shape. | |
doc.StartTrackRevisions("John Doe"); | |
shape = new Shape(doc, ShapeType.Sun); | |
shape.WrapType = WrapType.Inline; | |
shape.Width = 100.0; | |
shape.Height = 100.0; | |
doc.FirstSection.Body.FirstParagraph.AppendChild(shape); | |
// Get the document's shape collection which includes just the two shapes we added. | |
List<Shape> shapes = doc.GetChildNodes(NodeType.Shape, true).Cast<Shape>().ToList(); | |
Assert.AreEqual(2, shapes.Count); | |
// Remove the first shape. | |
shapes[0].Remove(); | |
// Because we removed that shape while changes were being tracked, the shape counts as a delete revision. | |
Assert.AreEqual(ShapeType.Cube, shapes[0].ShapeType); | |
Assert.True(shapes[0].IsDeleteRevision); | |
// And we inserted another shape while tracking changes, so that shape will count as an insert revision. | |
Assert.AreEqual(ShapeType.Sun, shapes[1].ShapeType); | |
Assert.True(shapes[1].IsInsertRevision); | |
// The document has one shape that was moved, but shape move revisions will have two instances of that shape. | |
// One will be the shape at its arrival destination and the other will be the shape at its original location. | |
doc = new Document(MyDir + "Revision shape.docx"); | |
shapes = doc.GetChildNodes(NodeType.Shape, true).Cast<Shape>().ToList(); | |
Assert.AreEqual(2, shapes.Count); | |
// This is the move to revision, also the shape at its arrival destination. | |
Assert.False(shapes[0].IsMoveFromRevision); | |
Assert.True(shapes[0].IsMoveToRevision); | |
// This is the move from revision, which is the shape at its original location. | |
Assert.True(shapes[1].IsMoveFromRevision); | |
Assert.False(shapes[1].IsMoveToRevision); |