当前位置:

首页 > 编程开发 > Java怎么获取Word中所有的插入和删除修订

Java怎么获取Word中所有的插入和删除修订

在Word文档中启用跟踪更改功能后,会记录文档中的所有编辑行为,例如插入、删除、替换和格式更改。对插入或删除的内容,可通过本文中介绍的方法来获取。引入Jar方法1手动引入:将FreeSpire.DocforJava下载到本地,解压,找到lib文件夹下的Spire.Doc.jar文件。在IDEA中打开如下界面,将本地路径中的jar文件引入Java程序:方法2通过Maven仓库下载。如下配置pom.xml:com.e-icebluehttps://repo.e-iceblue.cn/repository/ma

    在 Word 文档中启用跟踪更改功能后,会记录文档中的所有编辑行为,例如插入、删除、替换和格式更改。对插入或删除的内容,可通过本文中介绍的方法来获取。

    引入Jar

    方法1

    手动引入:将Free Spire.Doc for Java下载到本地,解压,找到lib文件夹下的Spire.Doc.jar文件。在IDEA中打开如下界面,将本地路径中的jar文件引入Java程序:

    Java怎么获取Word中所有的插入和删除修订

    方法2

    通过Maven仓库下载。如下配置pom.xml:

    
    
    com.e-iceblue
    https://repo.e-iceblue.cn/repository/maven-public/
    
    
    
    
    e-iceblue
    spire.doc.free
    5.2.0
    
    

    获取插入、删除的修订

    • 创建一个Document 实例并使用Document.loadFromFile() 方法加载一个示例 Word 文档。

    • 创建一个StringBuilder 对象,然后使用StringBuilder.append() 方法记录据。

    • 遍历所有Section 和 section 中 body 下的每一个元素。

    • 使用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
    ) document.getSections()) { //遍历section中body下的元素 for(DocumentObject docItem : (Iterable)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)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中所有的插入和删除修订

    本文内容来源于互联网,如有侵权请联系删除。
    作者最新文章
    编程开发
    相关文章 更多
    C++动态数组初始化怎么写?常用语句与代码示例
    C++动态数组初始化怎么写?常用语句与代码示例

    深入解析C++中动态数组的初始化机制,涵盖new操作符的不同用法、基本类型与类对象的初始化差异,以及为何在现代C++开发中应优先使用std::vector。

    Office三件套实战:Word+Excel+PPT高效协作工作流
    Office三件套实战:Word+Excel+PPT高效协作工作流

    本文通过“活动报名与费用汇报”真实案例,演示如何高效协同使用Word、Excel和PPT。从建立规范的项目文件夹开始,分别完成Word内容撰写、Excel数据统计与PPT结论展示,并强调多软件间数据一致性与交付检查的重要性,帮助新手建立完整的办公任务处理逻辑。

    电脑入门自学路线:Word、Excel、PPT 实战练习指南
    电脑入门自学路线:Word、Excel、PPT 实战练习指南

    本文提供Word、Excel和PPT的零基础自学路线,强调以“可交付成果”为导向而非功能堆砌。通过分阶段练习文档排版、数据表格处理及演示文稿制作,帮助新手建立规范的文件管理、公式核对及放映检查习惯,快速掌握日常办公核心技能。

    PDF转Word的三种方法及转换后编辑性检查指南
    PDF转Word的三种方法及转换后编辑性检查指南

    本文提供PDF转Word的三种处理方式:在线工具(极轻PDF)、桌面软件及Microsoft Word内置功能。重点说明转换后需核对文字编辑、图片位置、表格及页码等关键要素,确保文件可直接编辑。适用于急需处理文档或需保留原格式的场景,帮助读者避免格式错乱和文件覆盖风险。

    PHP 生成 Word 工具 MDword 1.1.9 正式发布,已知 bug 修复
    PHP 生成 Word 工具 MDword 1.1.9 正式发布,已知 bug 修复

    MDword1.1.9版本发布,新增图片宽度百分比设定及小语种字体自动匹配功能。该工具基于母版替换机制动态生成Word文档,相比逐元素写入的PHPWord,开发效率更高。性能测试显示,1页母版执行100次变量赋值仅需0.04秒,连续运行内存占用稳定在约0.05MB。

    Word转PDF后图片模糊怎么办?清晰导出与检查指南
    Word转PDF后图片模糊怎么办?清晰导出与检查指南

    Word转完PDF图片发虚,大多和源图分辨率、Word压缩设置,或是导出方式有关。下面整理了两种完整的转换方法,顺便说下怎么排查、提升导出后的图片清晰度。 方法一:用极轻PDF在线转换 极轻PDF(pdf.cn)自带Word转PDF功能,不用给Word 2007额外装插件,上传文档直接就能转。 步骤

    PDF转Word要怎么操作?支持批量PDF转换成Word吗?
    PDF转Word要怎么操作?支持批量PDF转换成Word吗?

    PDF.cn在线PDF转Word页面每次仅限转换一个文件,适合临时处理单份文字型PDF。扫描件或图片版PDF无法直接转为可编辑文档。批量转换或文件超过50MB时,建议改用客户端处理,避免反复上传下载。

    PDF文件如何转换成可以编辑的Word文件?PDF转换Word要如何操作?
    PDF文件如何转换成可以编辑的Word文件?PDF转换Word要如何操作?

    普通文字型PDF可通过在线工具直接转换为可编辑的DOCX文档,而扫描件则需先进行OCR识别。转换时务必上传完整文件,转换完成后应仔细检查文字、表格及图片的排版情况,如有少量偏差可手动微调。

    PDF怎么在线转成Word?线上PDF转Word操作教程
    PDF怎么在线转成Word?线上PDF转Word操作教程

    PDF在线转Word仅支持普通可复制型PDF,不支持扫描件或超50MB文件。操作步骤:上传文件、点击转换、下载Word。转换后需检查文字、表格、图片排版,复杂排版需手动调整,确保内容准确无误。

    PDF怎么转成可编辑Word?在线转换与版式检查方法
    PDF怎么转成可编辑Word?在线转换与版式检查方法

    将PDF转换为可编辑Word时,需先区分普通文字版与扫描件。普通PDF可直接用极轻PDF、Smallpdf等在线工具转换;扫描件需OCR识别。转换后需逐页核对标题层级、图片位置、表格结构及数字格式,确保内容完整准确。

    查看更多
    精品专题 更多
    装机必备
    装机必备

    正软商城装机必备专区,精选办公、浏览器、安全防护、影音播放、压缩解压、设计创作和系统工具等电脑常用正版软件,帮助用户快速完成新电脑软件配置。

    Windows
    Windows

    正软商城Windows软件专区,汇集适用于Windows电脑的办公、设计、安全防护、影音播放、开发工具和系统优化软件,提供软件介绍、系统要求、正版授权及购买下载服务。

    macOS软件
    macOS软件

    正软商城macOS软件专区,精选适用于Mac电脑的办公、设计、影音、效率、开发和系统工具,提供软件功能介绍、macOS兼容版本、正版授权及购买下载服务。

    Mac软件 更多
    灵活计算器
    灵活计算器
    macOS/iOS/Android

    灵活计算器是一款笔记式算数应用,支持实时计算、动态关联和云端同步功能。记录、整理和输出之间的过渡会更自然,适合长期写作、做笔记或持续沉淀个人内容。

    赤友清理大师
    赤友清理大师
    macOS

    赤友清理大师是一款为 Mac 设计的智能清理优化工具,可精准扫描垃圾、大文件、重复文件等,释放磁盘空间。做扫描整理、文字提取和表格转换时,它能把识别后的处理步骤接得更顺,资料录入这类场景会省下不少时间。

    极度公式
    极度公式
    Windows/macOS/Linux

    极度公式是一款跨平台专业LaTeX公式识别编辑软件,支持OCR公式识别和多平台编辑。和使用说明,避免使用,享受完整功能与稳定支持。做扫描整理、文字提取和表格转换时,它能把识别后的处理步骤接得更顺,资料录入这类场景会省下不少时间。

    WINDOWS 更多
    Windows 10
    Windows 10
    Windows

    Windows 10 是一款微软推出的经典操作系统,拥有硬件兼容性与多任务处理能力。它更偏向把系统状态查看和常用调节动作放在一起,适合需要持续观察和微调设备状态的场景。

    极度公式
    极度公式
    Windows/macOS/Linux

    极度公式是一款跨平台专业LaTeX公式识别编辑软件,支持OCR公式识别和多平台编辑。和使用说明,避免使用,享受完整功能与稳定支持。做扫描整理、文字提取和表格转换时,它能把识别后的处理步骤接得更顺,资料录入这类场景会省下不少时间。

    密码键盘
    密码键盘
    Windows/macOS/iOS/Android

    密码键盘是一款兼具安全性与便捷性的高效密码管理器。日常使用里的持续防护和信息管理会更突出,适合把安全控制放进长期使用流程中的场景。