Word 文書で変更履歴機能を有効にすると、挿入、削除、置換、書式変更など、文書内のすべての編集操作が記録されます。挿入または削除されたコンテンツは、この記事で説明されている方法で取得できます。
マニュアルの紹介: Java 用の Free Spire.Doc をローカルにダウンロードし、解凍し、lib フォルダーで見つけます。 Spire.Doc.jar ファイル。 IDEA で次のインターフェイスを開き、ローカル パスにある jar ファイルを Java プログラムに導入します。
Maven を介してダウンロードします。リポジトリ。 pom.xml を次のように構成します。
<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>
Document インスタンスを作成し、Document を使用します。 .loadFromFile() メソッドは、サンプル Word ドキュメントを読み込みます。
StringBuilder オブジェクトを作成し、StringBuilder.append() メソッドを使用してデータを記録します。
すべての Section とセクション内の本文の下にあるすべての要素をスキャンします。
Paragraph.isInsertRevision() メソッドを使用して、段落が挿入されたリビジョンかどうかを判断します。その場合は、Paragraph.getInsertRevision() メソッドを使用して、挿入リビジョンを取得します。次に、EditRevision.getType() メソッドと EditRevision.getAuthor() メソッドを使用して、リビジョン タイプと作成者を取得します。
Paragraph.inDeleteRevision() メソッドを使用して、段落が削除されたリビジョンかどうかを確認します。その場合は、Paragraph.getDeleteRevision() メソッドを使用して削除リビジョンを取得します。次に、EditRevision.getType() メソッドと EditRevision.getAuthor() メソッドを使用して、リビジョン タイプと作成者を取得します。
段落内のすべての要素を走査して、テキスト範囲のリビジョンを取得します。
FileWriter.write() メソッドを使用して、StringBuilder の内容を 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(); } }
結果の取得:
以上がJava を使用して Word で挿入および削除されたすべてのリビジョンを取得する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。