변경 내용 추적을 켜고 Java에서 Word의 변경 내용을 수락 또는 거부하는 방법

Microsoft Word의 변경 내용 추적 기능을 사용하면 문서를 임시로 편집한 다음 나중에 수락하거나 거부하도록 선택할 수 있습니다. Spire.Doc for java은 Java 응용 프로그램의 코드에서 변경 내용 추적 기능을 작동하도록 지원합니다. 이 문서에서는 다음 세 부분으로 기능을 설명합니다.
  • Word에서 변경 내용 추적을 설정하는 방법
  • Word에서 모든 개정판 가져오기
  • Word에서 추적된 변경 내용 수락 또는 거부

  • Java용 Spire.Doc 설치



    먼저 Spire.Doc.jar 파일을 Java 애플리케이션의 종속성으로 추가해야 합니다. Spire.Doc.Jar을 직접 다운로드할 수 있습니다. Maven을 사용하는 경우 다음 설정을 사용하여 가져오십시오.

    <repositories>
        <repository>
            <id>com.e-iceblue</id>
            <name>e-iceblue</name>
            <url> https://repo.e-iceblue.com/nexus/content/groups/public/</url>
        </repository>
    </repositories>
    <dependencies>
        <dependency>
            <groupId>e-iceblue</groupId>
            <artifactId>spire.doc</artifactId>
            <version>5.3.16</version>
        </dependency>
    </dependencies>
    


    Word에서 변경 내용 추적을 켜는 방법



    Spire.Doc for Java는 변경 사항 추적 기능을 켜거나 끄는 document.setTrackChanges(boolean) 메서드를 제공합니다. 자세한 단계는 다음과 같습니다.
  • 문서 인스턴스를 만듭니다.
  • Document.loadFromFile() 메서드를 사용하여 샘플 Word 문서를 로드합니다.
  • document.setTrackChanges(true) 메소드를 사용하여 기록 및 변경 사항에 대한 변경 사항 추적 기능을 켭니다.
  • 단락을 추가하거나 제거하여 문서를 일부 변경합니다.
  • Document.saveToFile() 메서드를 사용하여 문서를 다른 파일에 저장합니다.

  • import com.spire.doc.*;
    import com.spire.doc.documents.*;
    import com.spire.doc.fields.*;
    
    public class setTrackchanges {
        public static void main(String[] args) throws Exception {
    
            //Load the sample document
            Document document = new Document();
            document.loadFromFile("Sample.docx");
    
            //Turn on the track changes function
            document.setTrackChanges(true);
    
            //Insert a new paragraph
            Paragraph newPara = new Paragraph(document);
            TextRange tr= newPara.appendText("• Died: November 30, 1900 in Paris, France");
            tr.getCharacterFormat().setBold(true);
            document.getSections().get(0).getParagraphs().insert(3,newPara);
    
            //Remove a paragraph
            document.getSections().get(0).getParagraphs().removeAt(6);
    
            //Save the document to file
            document.saveToFile("Result.Docx",FileFormat.Docx);
        }
    }
    




    Word에서 모든 개정판 가져오기



    Java용 Spire.Doc은 Paragraph.getInsertRevision() 메서드를 제공하여 단락이 새로 추가되었는지 감지한 다음 EditRevision.getType() 메서드를 통해 유형을 가져옵니다.
  • Document.loadFromFile() 메서드를 사용하여 샘플 파일을 로드합니다.
  • StringBuilder 객체를 만들고 StringBuilder.append() 메서드를 사용하여 데이터를 기록합니다.
  • 섹션의 본문 아래에 있는 모든 섹션과 모든 요소를 ​​트래버스합니다.
  • 단락이 삽입 개정인지 또는 Paragraph.isInsertRevision() 메서드를 사용하지 않는지 확인합니다. 예인 경우 Paragraph.getInsertRevision() 메서드를 사용하여 삽입 개정을 가져옵니다. 그런 다음 EditRevision.getType() 메서드와 EditRevision.getAuthor() 메서드를 사용하여 개정 유형과 작성자를 가져옵니다.
  • 단락이 삭제 개정인지 또는 Paragraph.inDeleteRevision() 메서드를 사용하지 않는지 확인합니다.
  • 단락의 모든 요소를 ​​트래버스하여 텍스트 범위의 수정 사항을 가져옵니다.
  • FileWriter.write() 메서드를 사용하여 StringBuilder의 내용을 txt 문서에 씁니다.

  • import com.spire.doc.*;
    import com.spire.doc.documents.*;
    import com.spire.doc.fields.*;
    import com.spire.doc.formatting.revisions.*;
    
    import java.io.FileWriter;
    
    public class getRevisions {
        public static void main(String[] args) throws Exception {
    
            //Load file
            Document document = new Document();
            document.loadFromFile("Result.docx");
    
            StringBuilder insertRevision = new StringBuilder();
            insertRevision.append("Insert revisions:"+"\n");
            int index_insertRevision = 0;
            StringBuilder deleteRevision = new StringBuilder();
            deleteRevision.append("Delete revisions:"+"\n");
            int index_deleteRevision = 0;
            //Traverse sections
            for (Section sec : (Iterable<Section>) document.getSections())
            {
                //Iterate through the element under body in the section
                for(DocumentObject docItem : (Iterable<DocumentObject>)sec.getBody().getChildObjects())
                {
                    if (docItem instanceof Paragraph)
                    {
                        Paragraph para = (Paragraph)docItem;
                        //Determine if the paragraph is an insertion revision
                        if (para.isInsertRevision())
                        {
                            index_insertRevision++;
                            insertRevision.append("Index: " + index_insertRevision+"\n");
                            //Get insertion revision
                            EditRevision insRevison = para.getInsertRevision();
    
                            //Get insertion revision type
                            EditRevisionType insType = insRevison.getType();
                            insertRevision.append("Type: " + insType+"\n");
                            //Get insertion revision author
                            String insAuthor = insRevison.getAuthor();
                            insertRevision.append("Author: " + insAuthor + "\n");
    
                        }
                        //Determine if the paragraph is a delete revision
                        else 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");
                        }
                        //Iterate through the element in the paragraph
                        for(DocumentObject obj : (Iterable<DocumentObject>)para.getChildObjects())
                        {
                            if (obj instanceof TextRange)
                            {
                                TextRange textRange = (TextRange)obj;
                                //Determine if the textrange is an insertion revision
                                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");
                                }
                                else if (textRange.isDeleteRevision())
                                {
                                    index_deleteRevision++;
                                    deleteRevision.append("Index: " + index_deleteRevision +"\n");
                                    //Determine if the textrange is a delete revision
                                    EditRevision delRevison = textRange.getDeleteRevision();
                                    EditRevisionType delType = delRevison.getType();
                                    deleteRevision.append("Type: " + delType+"\n");
                                    String delAuthor = delRevison.getAuthor();
                                    deleteRevision.append("Author: " + delAuthor+"\n");
                                }
                            }
                        }
                    }
                }
            }
    
            //Save to a .txt file
            FileWriter writer1 = new FileWriter("insertRevisions.txt");
            writer1.write(insertRevision.toString());
            writer1.flush();
            writer1.close();
    
    
            //Save to a .txt file
            FileWriter writer2 = new FileWriter("deleteRevisions.txt");
            writer2.write(deleteRevision.toString());
            writer2.flush();
            writer2.close();
        }
    }
    




    Word에서 추적된 변경 내용 수락 또는 거부



    Spire.Doc for Java는 모든 개정을 허용하는 document.acceptChanges() 메서드와 모든 개정을 제거하는 document.rejectChanges() 메서드를 제공합니다.
  • Document 인스턴스를 만들고 Document.loadFromFile() 메서드를 사용하여 샘플 Word 문서를 로드합니다.
  • Document.acceptChanges() 메서드를 사용하여 문서의 모든 변경 사항을 수락합니다.
  • Document.rejectChanges() 메서드를 사용하여 문서의 모든 변경 사항을 거부합니다.
  • Document.saveToFile() 메서드를 사용하여 문서를 다른 파일에 저장합니다.

  • import com.spire.doc.*;
    
    public class acceptChanges {
        public static void main(String[] args) throws Exception {
    
            //Load file
            Document document = new Document();
            document.loadFromFile("Result.docx");
    
            if (document.hasChanges()) 
                //Accept all changes
                document.acceptChanges();
    
                //Reject the changes
                //doc.rejectChanges();
    
        //Save the  document to file
            document.saveToFile("Acceptchangs.docx",FileFormat.Docx_2010);
        }
    }
    


    좋은 웹페이지 즐겨찾기