如何使用 OpenXml 将外部图像添加到 Word 文档?

2024-01-04

我正在尝试使用 C# 和 Open XML 将图像从 url 插入到文档中。该图像可能会发生变化,因此我不想下载它,我希望它保留为外部参考。

我发现了几个像这样的例子,可以让我添加本地图像:

http://msdn.microsoft.com/en-us/library/bb497430.aspx http://msdn.microsoft.com/en-us/library/bb497430.aspx

我该如何调整它以获取 URI?或者还有另一种方法吗?


您可以通过快速零件字段将外部图像添加到 Word 文档。 有关说明,请参阅以下答案超级用户 https://superuser.com/questions/38870/in-microsoft-word-how-can-i-link-to-an-image-from-the-web-which-updates.

要以编程方式实现所描述的步骤,您必须 使用外部关系包含来自 URL 的图像。

以下是实现此目的的步骤:

  1. 创建 Picture 类的实例。
  2. 添加Shape来指定图片的样式(宽度/高度)。
  3. 使用Image Data 类指定外部关系的ID。
  4. 将外部关系添加到主文档部分。为外部关系提供您在步骤 3 中指定的相同 ID。

下面的代码只是实现了上面描述的步骤。图像被添加到 word文档中的第一段。

using (WordprocessingDocument newDoc = WordprocessingDocument.Open(@"c:\temp\external_img.docx", true))
{
    var run = new Run();

    var picture = new Picture();

    var shape = new Shape() { Id = "_x0000_i1025", Style = "width:453.5pt;height:270.8pt" };
    var imageData = new ImageData() { RelationshipId = "rId56" };

    shape.Append(imageData);

    picture.Append(shape);

    run.Append(picture);

    var paragraph = newdoc.MainDocumentPart.Document.Body.Elements<Paragraph>().FirstOrDefault();

    paragraph.Append(run);      

    newDoc.MainDocumentPart.AddExternalRelationship(
       "http://schemas.openxmlformats.org/officeDocument/2006/relationships/image",
       new System.Uri("<url to your picture>", System.UriKind.Absolute), "rId56");
}

在上面的代码中,我省略了定义形状类型的代码。我建议你使用 像这样的工具OpenXML SDK 生产力工具 http://www.microsoft.com/en-us/download/details.aspx?id=5124检查与图像有外部关系的 Word 文档。

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

如何使用 OpenXml 将外部图像添加到 Word 文档? 的相关文章

随机推荐

  • 如何在AWS SES html模板中添加添加if条件?

    要求是根据从 api 接收到的正文数据发送模板邮件 BodyData 可能不包含某些标签 请参阅下面的示例模板部分 p sender has invited you to join team teamName p 因此正文数据可能不包含团队
  • 在持续时间参数(# 行、秒、#Tweets 等)后停止 Tweepy 流

    我正在使用 Tweepy 捕获基于主题标签 WorldCup 的流式推文 如下面的代码所示 它按预期工作 class StdOutListener StreamListener Handles data received from the
  • 使用 boost.python 时 C++ 流有什么问题?

    更新 2 我不知道为什么这个仍然被投票 2014 年 3 月 自从我多年前问过这个问题以来 这个问题似乎已经解决了 确保您使用的是最新版本的 boost 更新 也许 C 流需要初始化才能格式化数字 而在 Python 中加载共享库时初始化没
  • 索引/匹配 - 如果第一个值为空,则查找第二个值

    我希望在用 Excel 编写公式时得到一些帮助 我有一个表 其中包含员工列表及其手机号码 但是 该表的结构方式存在许多空白行和重复行 本质上 我希望通过对相应的手机号码执行查找来创建一个没有任何重复项和空白的新表 问题是 当我执行标准索引
  • 如何在 Kubernetes Python 客户端中指定 ca_bundle

    我正在尝试使用Kubernetes Python 客户端 https github com kubernetes client python连接到我的 Kubernetes 集群 该 API 位于我的 CA 签署的 SSL 证书后面 如果我
  • 使用 jwt 和许多角色进行基于角色的访问

    我有一个带有许多控制器的 Web api 通过这些控制器 我定义了很多角色并装饰了控制器 功能 为了访问 api 我使用 jwt 我尝试将我的角色写入 jwt 之类的键值中 这工作正常 但如果我在 jwt 中设置许多角色 令牌就会变得非常大
  • Bootstrap 3.1.0:附加太长

    我在用引导程序3 1 0 当 附加 对于视口来说太长时 它会被切断 永远不会显示底部项目 是否有可能让 Bootstrap 的词缀以用户仍然可以从上到下滚动完整词缀的方式运行 有问题的例子 div class container div c
  • Python 中列的绝对值

    如何将 计数 列的值转换为绝对值 我的数据框的摘要如下 datetime count 0 2011 01 20 00 00 00 14 565996 1 2011 01 20 01 00 00 10 204177 2 2011 01 20
  • Python快速异或超范围算法

    有一个编程挑战 需要生成一个XOR基于序列起始号和间隔长度的校验和 它要求您根据间隔长度迭代序列 并在每次迭代时不断减少为校验和计算选取的元素数量 Example 如果起始编号是0间隔长度为3 该过程将如下所示 0 1 2 3 4 5 6
  • java中堆内存和字符串常量池有什么区别

    In Java 使用创建的对象新操作员将被存储在堆 记忆 使用创建的对象字符串字面量存储在 这字符串常量池 我正在运行以下代码来检查哈希码 String nameOne Deepak String nameTwo new String De
  • 混合手动\自动编号序列

    在编号顺序设置 CS201010 中 有一个手动编号选项 但是 取决于文档类型 在某些情况下 参考编号可以留空 如果它是空白的 我希望自动编号启动 或者在保存文档之前调用 NextNumber 函数 是否可以 我怎么做 目前 如果我强制执行
  • 相当于其他编译器中gcc/clang的march=native?

    我想知道除了 gcc 和 clang 之外是否还有其他编译器提供类似 march native选项 如果有 该选项是什么 我已经从另一个问题中明白了 在 Visual C 中自动构建最佳可用平台 相当于 gcc 的 march native
  • 为什么 const 成员必须在构造函数初始值设定项中初始化,而不是在其主体中初始化?

    为什么类成员必须声明为const在构造函数初始值设定项列表中而不是在构造函数主体中初始化 两者有什么区别 在 C 中 当执行进入构造函数主体时 对象被视为完全初始化 你说 我想知道为什么 const 必须在构造函数初始值设定项列表中而不是在
  • stateChangeStart 中从子状态访问父状态的参数

    有没有办法从父状态获取参数 我的州看起来像这样 stateProvider state home url home param1 template div home div
  • 在 django-rest-framework 验证器中为整数字段强制指定整数类型

    django rest framework 验证器接受字符串引用的整数作为整数字段的有效数据 有没有办法强制规定数据类型 以便不接受字符串引用的整数 序列化器将原始数据保存在self initial data自定义验证方法可以从中检索它 所
  • 如何在 Android 应用程序中将 putExtra() 与 FLAG_ACTIVITY_REORDER_TO_FRONT 一起使用?

    我有一个应用程序 称为 App1 在我的 App1 中 我调用相机应用程序 intent new Intent Intent ACTION MAIN intent setComponent new ComponentName com and
  • 在 C# 中,“DateTime”类型中的“?”是什么?[重复]

    这个问题在这里已经有答案了 我刚刚在使用 System DirectoryServices AccountManagement 时遇到了一些代码 public DateTime LastLogon get 是什么 在日期时间之后 我找到了一
  • java.sql.Array/Blob/Clob 类型是否需要“free()”?

    我需要明确的电话吗free 在数组 clob 等上 或者关闭 ResultSet 和 或 Statement 会自动解决这个问题吗 javadoc 没有说什么 所以我认为这是没有必要的 但我不想做出错误的假设 另外 如果没有必要 立即关闭结
  • 如何更改力布局中节点之间的距离?

    我是 D3 的新手 正在尝试学习力布局 我想改变节点之间的链接距离并保持原点形状 我发现在更改链接的距离后 布局发生了变化 图一是原来的布局 然后我用代码改变了链接距离distance 150 第80行 使节点更进一步 但布局的变化超出了我
  • 如何使用 OpenXml 将外部图像添加到 Word 文档?

    我正在尝试使用 C 和 Open XML 将图像从 url 插入到文档中 该图像可能会发生变化 因此我不想下载它 我希望它保留为外部参考 我发现了几个像这样的例子 可以让我添加本地图像 http msdn microsoft com en