使用 office.js 在 Word 中插入注释

2023-12-31

我正在尝试在 office.js 中制作一个 Word 插件,以在文档中插入注释。在我看来,实现这一目标的唯一方法是使用 OOXML。

我可以插入评论,但我的问题是,当我这样做时,会插入一个段落分隔符,并且可以从该图像中看到。

据我所知,归结为,如果我只插入一些文本,正文的内容如下所示,效果很好

<w:p>
    <w:r>
        <w:t>Some text</w:t>
    </w:r>
</w:p>

但是,如果我插入对评论的引用,则会导致段落在我插入的内容之后结束。在这种情况下,正文的内容如下所示:

<w:p>
    <w:commentRangeStart w:id="0"/>
    <w:r>
        <w:t>selectedText</w:t>
    </w:r>
    <w:r>
        <w:commentReference w:id="0"/>
    </w:r>
    <w:commentRangeEnd w:id="0"/>
</w:p>

用于替换突出显示文本的 JavaScript 代码如下所示:

function insertComment() {
    Office.context.document.getSelectedDataAsync(
        Office.CoercionType.Text,
        function (result) {
            if (result.status == "succeeded") {
                // Get the OOXML returned from the getSelectedDataAsync call.
                var selectedText = result.value;
                var comment = getCommentAsOoxml(selectedText);
                Office.context.document.setSelectedDataAsync(comment, { coercionType: Office.CoercionType.Ooxml }, function (asyncResult) {
                    if (asyncResult.status == "failed") {
                        console.debug("Action failed with error: " + asyncResult.error.message);
                    }
                });
            }
        });
}

可以在此处看到插入的 OOXML:

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<?mso-application progid="Word.Document"?>
<pkg:package 
    xmlns:pkg="http://schemas.microsoft.com/office/2006/xmlPackage">
    <pkg:part pkg:name="/_rels/.rels" pkg:contentType="application/vnd.openxmlformats-package.relationships+xml" pkg:padding="512">
        <pkg:xmlData>
            <Relationships 
                xmlns="http://schemas.openxmlformats.org/package/2006/relationships">
                <Relationship Id="rId1" Type="http://schemas.openxmlformats.org/officeDocument/2006/relationships/officeDocument" Target="word/document.xml"/>
            </Relationships>
        </pkg:xmlData>
    </pkg:part>
    <pkg:part pkg:name="/word/_rels/document.xml.rels" pkg:contentType="application/vnd.openxmlformats-package.relationships+xml" pkg:padding="256">
        <pkg:xmlData>
            <Relationships xmlns="http://schemas.openxmlformats.org/package/2006/relationships">
                <Relationship Id="rId1" Type="http://schemas.openxmlformats.org/officeDocument/2006/relationships/comments" Target="comments.xml"/>
            </Relationships>
        </pkg:xmlData>
    </pkg:part>
    <pkg:part pkg:name="/word/document.xml" pkg:contentType="application/vnd.openxmlformats-officedocument.wordprocessingml.document.main+xml">
        <pkg:xmlData>
            <w:document 
                xmlns:w="http://schemas.openxmlformats.org/wordprocessingml/2006/main">
                <w:body>
                    <w:p>
                        <w:commentRangeStart w:id="0"/>
                        <w:r>
                            <w:t>selectedText</w:t>
                        </w:r>
                        <w:r>
                            <w:commentReference w:id="0"/>
                        </w:r>
                        <w:commentRangeEnd w:id="0"/>
                    </w:p>
                </w:body>
            </w:document>
        </pkg:xmlData>
    </pkg:part>
    <pkg:part pkg:name="/word/comments.xml" pkg:contentType="application/vnd.openxmlformats-officedocument.wordprocessingml.comments+xml">
        <pkg:xmlData>
            <w:comments 
                xmlns:w="http://schemas.openxmlformats.org/wordprocessingml/2006/main">
                <w:comment w:id="0" w:author="jkh" w:date="2016-04-27T08:15:00Z" w:initials="JH">
                    <w:p>
                        <w:r>
                            <w:t>comment</w:t>
                        </w:r>
                    </w:p>
                </w:comment>
            </w:comments>
        </pkg:xmlData>
    </pkg:part>
</pkg:package>

很抱歉这篇文章特别长。遗憾的是,新用户在插入链接和图像方面受到限制:(


这实际上是 API 中已确认的错误。对此问题的修复将作为即将推出的 Office 更新的一部分推出。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用 office.js 在 Word 中插入注释 的相关文章

随机推荐

  • 如何在 Mac OSX El Capitan 中安装 gdb(调试器)?

    如何在 Mac OSX El Capitan 中安装 gdb 调试器 我尝试过安装 gdb 但失败了几次 我正在关注这个网址 http ntraft com installing gdb on os x mavericks http ntr
  • RetroFit 状态代码 201 解释为错误

    我正在开发一个 RESTful API 它有一个端点 可以创建一个实体 该端点通过 POST 调用 并以 201 和正文中的字段进行响应 我看到 Retrofit 将这个 201 响应解释为失败并调用 failure 方法 一种解决方案是将
  • 如何提高终端中的光标速度? [关闭]

    Closed 这个问题是无关 help closed questions 目前不接受答案 如何提高终端中的光标速度 顺便说一句 我有 Mac OS X 了解 Linux 上的它也会很有趣 我不知道应该在 Google 中搜索什么 或者您喜欢
  • 如何在C中使用重定向进行文件输入

    我需要从终端获取文件 我知道命令将如下所示 a out lt fileName txt 我不确定如何在程序中使用 fgets 来使用从终端请求的文件 使用重定向将输入文件的内容发送到标准输入 因此您需要从代码内的标准输入读取 所以类似于 为
  • Gmail.Users.Messages.remove(me, id) - 未找到错误

    有没有其他人发现高级 Gmail 服务调用 Gmail Users Messages remove me id 现在出现错误 有人有解决办法吗 我有一个可靠的脚本 每隔几个小时就会删除垃圾邮件和垃圾邮件 自 17 年 2 月 21 日左右起
  • 写入响应正文后在 HttpServletResponse 上设置标头

    我发现了一个困难的方法 那就是不可能向一个HttpServletResponse在开始将响应主体写入输出缓冲区之后 我想在某些随机宇宙中这可能是有意义的 即使所有内容仍然只是缓冲在内存中 现在的问题是 是否有一些技巧可以以某种方式规避这个问
  • 获取数组中出现次数最多的元素

    我正在寻找一种优雅的方法来确定哪个元素出现次数最多 mode http en wikipedia org wiki Mode 28statistics 29 在 JavaScript 数组中 例如 在 pear apple orange a
  • 通过Asp.net背后的代码访问虚拟目录文件夹

    我正在尝试从代码隐藏访问虚拟目录文件夹 ASP Net 网站名称 SuperImages 物理文件夹 C images 虚拟目录文件夹 allimages 与App Data Scripts Properties文件夹处于同一级别 我正在尝
  • 如何使用 Fragments 在 TabLayout 中的每个选项卡中显示不同的布局

    我一直在尝试使用 PagerTabStrip 在可滑动的 TabLayout 中的不同选项卡中显示不同的布局 有人可以帮忙吗 我想在第一个选项卡中显示一个布局 在第二个选项卡中显示第二个不同的布局等 public class MainAct
  • Facebook PHP SDK 上传照片

    尝试将我的服务器上渲染的照片即时上传到用户的 Facebook 相册 由于 FB 文档非常 非常 非常糟糕 至少可以这么说 我希望有人向我展示一些使用 PHP SDK 进行图形 API 调用的优秀代码示例 像这样的东西 try facebo
  • 执行 R 代码时出现错误“无法将‘环境’类型强制转换为‘字符’类型的向量”

    require shiny setwd C Users Harshad Desktop Equiskill BA cars lt read table file cars csv sep header TRUE quote var list
  • 使用 Spring Boot 的 Feign 客户端:RequestParam.value() 参数 0 为空

    我使用 Spring Boot 创建了一个简单的 Feign 客户端 如下所示 FeignClient spring cloud eureka client public interface GreetingClient RequestMa
  • 交叉引用 github 中的提交

    我想在我的主存储库的 github 问题中引用其他存储库 在本例中为子模块 中的提交 是否可以在不输入完整超链接的情况下执行此操作 类似于 github 如何从提交号创建缩短的超链接 答案 这样我们懒人就可以找到它 而不需要点击链接GitH
  • 如何用python创建系统托盘弹出消息? (视窗)

    我想知道如何用 python 创建系统托盘弹出消息 我在很多软件中都看到过这些内容 但很难找到资源来使用任何语言轻松完成此操作 有人知道在 Python 中执行此操作的一些库吗 在的帮助下pywin32 library https sour
  • 使用resteasy-jaxrs 的简单示例不起作用

    当我访问该页面时 我无法收到 hello 消息 package jaxrs ressources import javax ws rs GET import javax ws rs Path import javax ws rs PathP
  • 将回调函数传递给 jQuery AJAX 成功函数

    我试图传入一个函数 以便在 AJAX 调用成功时运行 但是它不起作用 因为它说 回调不是函数 Example 调用代码 getGrades var JS function getGrades grading company Set file
  • 为什么 IdHTTPProxyServer 会更改请求的 HTTP 版本?

    最近 我发现IdHTTPProxyServer会自动将所有HTTP 1 1请求更改为HTTP 1 0请求 这对我来说有点奇怪 因为我认为代理服务器不应该更改 HTTP 版本 有什么方法可以强制代理服务器不更改 HTTP 版本吗 TIdHTT
  • 在 PHP 中将 64 位十六进制转换为浮点数

    我正在尝试将 64 位十六进制数转换为 PHP 中的浮点数 40F82C719999999A 如果我在 IEEE 754 浮点转换页面中运行它http babbage cs qc cuny edu IEEE 754 old 64bit ht
  • 使用什么框架从 iPhone 连接到 SQL Server 实例? [复制]

    这个问题在这里已经有答案了 我需要编写一个 iPhone 应用程序来连接 SQL Server 实例 但我不知道可以使用哪个框架来执行此操作 有我可以使用的 ODBC 框架吗 任何链接将不胜感激 请不要告诉我使用网络服务 因为这不适合这种情
  • 使用 office.js 在 Word 中插入注释

    我正在尝试在 office js 中制作一个 Word 插件 以在文档中插入注释 在我看来 实现这一目标的唯一方法是使用 OOXML 我可以插入评论 但我的问题是 当我这样做时 会插入一个段落分隔符 并且可以从该图像中看到 据我所知 归结为