Word 문서에서 변경 내용 추적 기능을 활성화하면 삽입, 삭제, 대체, 서식 변경 등 문서의 모든 편집 동작이 기록됩니다. 삽입되거나 삭제된 콘텐츠는 본 문서에 설명된 방법을 통해 얻을 수 있습니다.
설명서 소개: Java용 무료 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() 메서드를 사용하여 개정 유형과 작성자를 가져옵니다.
문단의 모든 요소를 반복하여 텍스트 전체를 수정합니다.
StringBuilder의 내용을 txt 문서에 쓰려면 FileWriter.write() 메서드를 사용하세요.
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 중국어 웹사이트의 기타 관련 기사를 참조하세요!