Après avoir activé la fonctionnalité de suivi des modifications dans un document Word, tous les comportements d'édition dans le document, tels que les insertions, les suppressions, les substitutions et les modifications de formatage, seront enregistrés. Le contenu inséré ou supprimé peut être obtenu via la méthode décrite dans cet article.
Introduction manuelle : Téléchargez gratuitement Spire.Doc pour Java localement, décompressez-le et recherchez le fichier Spire.Doc.jar dans le dossier lib. Ouvrez l'interface suivante dans IDEA et introduisez le fichier jar dans le chemin local du programme Java :
Télécharger via le référentiel Maven. Configurez pom.xml comme suit :
<repositories> <repository> <id>com.e-iceblue</id> <url>https://repo.e-iceblue.cn/repository/maven-public/</url> </repository> </repositories> <dependencies> <dependency> <groupId>e-iceblue</groupId> <artifactId>spire.doc.free</artifactId> <version>5.2.0</version> </dependency> </dependencies>
Créez une instance Document et chargez un exemple de document Word à l'aide de la méthode Document.loadFromFile() .
Créez un objet StringBuilder, puis utilisez la méthode StringBuilder.append() pour enregistrer les données.
Traversez toute la Section et chaque élément sous le corps en section.
Utilisez la méthode Paragraph.isInsertRevision() pour déterminer si un paragraphe est une révision d'insertion. Si oui, utilisez la méthode Paragraph.getInsertRevision() pour obtenir la révision d'insertion. Utilisez ensuite la méthode EditRevision.getType() et la méthode EditRevision.getAuthor() pour obtenir le type de révision et l'auteur.
Utilisez la méthode Paragraph.inDeleteRevision() pour déterminer si un paragraphe est une révision de suppression. Si oui, utilisez la méthode Paragraph.getDeleteRevision() pour obtenir la révision de suppression. Utilisez ensuite la méthode EditRevision.getType() et la méthode EditRevision.getAuthor() pour obtenir le type de révision et l'auteur.
Parcourez tous les éléments d'un paragraphe pour obtenir des révisions à l'échelle du texte.
Utilisez la méthode FileWriter.write() pour écrire le contenu de StringBuilder dans un document txt.
Java
import com.spire.doc.*; import com.spire.doc.documents.Paragraph; import com.spire.doc.fields.TextRange; import com.spire.doc.formatting.revisions.EditRevision; import com.spire.doc.formatting.revisions.EditRevisionType; import java.io.FileWriter; public class GetAllRevisions { public static void main(String[] args)throws Exception { //加载示例 Word 文档 Document document = new Document(); document.loadFromFile("test.docx"); //创建一个 StringBuilder 对象以获取插入修订 StringBuilder insertRevision = new StringBuilder(); insertRevision.append("INSERT REVISIONS:"+"\n"); int index_insertRevision = 0; //创建一个 StringBuilder 对象以获取删除修订 StringBuilder deleteRevision = new StringBuilder(); deleteRevision.append("DELETE REVISIONS:"+"\n"); int index_deleteRevision = 0; //遍历所有节 for (Section sec : (Iterable<Section>) document.getSections()) { //遍历section中body下的元素 for(DocumentObject docItem : (Iterable<DocumentObject>)sec.getBody().getChildObjects()) { if (docItem instanceof Paragraph) { Paragraph para = (Paragraph)docItem; //确定段落是否为插入修订 if (para.isInsertRevision()) { index_insertRevision++; insertRevision.append("Index: " + index_insertRevision + " \n"); //获取插入修订 EditRevision insRevison = para.getInsertRevision(); //获取插入的段落文本内容 String insertRevisionString = para.getText(); //获取插入修订类型 EditRevisionType insType = insRevison.getType(); insertRevision.append("Type: " + insType + " \n"); //获取插入修订作者 String insAuthor = insRevison.getAuthor(); insertRevision.append("Author: " + insAuthor + " \n" + "InsertPara:"+ insertRevisionString ); } //确定段落是否为删除修订 if (para.isDeleteRevision()) { index_deleteRevision++; deleteRevision.append("Index: " + index_deleteRevision + " \n"); EditRevision delRevison = para.getDeleteRevision(); EditRevisionType delType = delRevison.getType(); deleteRevision.append("Type: " + delType + " \n"); String delAuthor = delRevison.getAuthor(); deleteRevision.append("Author: " + delAuthor + " \n"); } //遍历段落中的元素 for(DocumentObject obj : (Iterable<DocumentObject>)para.getChildObjects()) { if (obj instanceof TextRange) { TextRange textRange = (TextRange)obj; //确定文本范围是否为删除修订,并获取删除修订的类型、作者及删除的文本内容。 if (textRange.isDeleteRevision()) { index_deleteRevision++; deleteRevision.append("Index: " + index_deleteRevision +" \n"); EditRevision delRevison = textRange.getDeleteRevision(); EditRevisionType delType = delRevison.getType(); deleteRevision.append("Type: " + delType+ " \n"); String delAuthor = delRevison.getAuthor(); deleteRevision.append("Author: " + delAuthor + " \n"); String deletetext = textRange.getText(); deleteRevision.append("Delete text:" + deletetext +" \n"); } //确定文本范围是否为插入修订,并获取插入修订的类型、作者及文本内容。 else if (textRange.isInsertRevision()) { index_insertRevision++; insertRevision.append("Index: " + index_insertRevision +" \n"); EditRevision insRevison = textRange.getInsertRevision(); EditRevisionType insType = insRevison.getType(); insertRevision.append("Type: " + insType + " \n"); String insAuthor = insRevison.getAuthor(); insertRevision.append("Author: " + insAuthor + " \n"); String insertText = textRange.getText(); insertRevision.append("insertText:"+insertText); } } } } } } //保存插入修订内容为txt 文件 FileWriter writer1 = new FileWriter("insertRevisions.txt"); writer1.write(insertRevision.toString()); writer1.flush(); writer1.close(); //保存删除修订内容为txt 文件 FileWriter writer2 = new FileWriter("deleteRevisions.txt"); writer2.write(deleteRevision.toString()); writer2.flush(); writer2.close(); } }
Obtenez des résultats :
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!