>  기사  >  Java  >  Java를 사용하여 Word에서 삽입 및 삭제된 모든 개정판을 가져오는 방법

Java를 사용하여 Word에서 삽입 및 삭제된 모든 개정판을 가져오는 방법

WBOY
WBOY앞으로
2023-04-19 13:58:031713검색

    Word 문서에서 변경 내용 추적 기능을 활성화하면 삽입, 삭제, 대체, 서식 변경 등 문서의 모든 편집 동작이 기록됩니다. 삽입되거나 삭제된 콘텐츠는 본 문서에 설명된 방법을 통해 얻을 수 있습니다.

    Jar 소개

    방법 1

    설명서 소개: Java용 무료 Spire.Doc을 로컬로 다운로드하여 압축을 풀고 lib 폴더에서 Spire.Doc.jar 파일을 찾습니다. IDEA에서 다음 인터페이스를 열고 로컬 경로의 jar 파일을 Java 프로그램에 삽입합니다.

    Java를 사용하여 Word에서 삽입 및 삭제된 모든 개정판을 가져오는 방법

    방법 2

    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에서 삽입 및 삭제된 모든 개정판을 가져오는 방법

    위 내용은 Java를 사용하여 Word에서 삽입 및 삭제된 모든 개정판을 가져오는 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

    성명:
    이 기사는 yisu.com에서 복제됩니다. 침해가 있는 경우 admin@php.cn으로 문의하시기 바랍니다. 삭제