1

如何通过OpenXML SDK将一个word文档嵌入另一个word文档,但显示内容,而不是word的图标?例如,正如我们在 word 中手动执行的那样:从文件中插入对象 -> 不检查“显示为图标”?

我找到了这篇文章,但它使用了一个图标。我也尝试使用 OpenXML SDK Productivity Tool,但只显示生成的二进制数据。

编辑: 我使用以下代码:

DrawAspect = OleDrawAspectValues.Content

然后我添加图像部分:

var imagePart = mainDocumentPart.AddNewPart<ImagePart>("image/x-emf", imagePartId);
GenerateImagePart(imagePart);

但我的图像部分 - 只是单词图标的字节数组。因此,在这种情况下会发生以下情况:当我打开生成的文档时,它会将嵌入的文档显示为图标,但是当我双击此嵌入的文档,对其进行编辑并保存更改时,嵌入的文档会显示为内容,所以它可能是可以在不编辑嵌入文档的情况下以某种方式显示此内容吗?我应该使用文档截图的字节数组而不是单词图标的字节数组吗?不确定我描述得很清楚,所以请询问

4

2 回答 2

3

恐怕你所要求的几乎是不可能的。就文字文件而言,图标和嵌入文件之间的唯一区别是图像。当您几乎不使用图标 Word 时,只需截取您正在嵌入的文档的屏幕截图并将其插入到图标图形的位置。

我上传了一个从我制作的 Word 文件中获取的示例。在 .docx 文件的/media文件夹中找到了这个小宝石。

因此,基本上,如果您无法使用 Icon 来解决此问题,您唯一的选择是以某种方式获取您想要嵌入的 word 文件的图片并插入该图片而不是 Icon 图像。

你会怎么做那不可能是漂亮的。首先,open xml sdk 不包含这样的功能。我也尝试过使用办公室互操作,但没有运气。

我只看到了两种可能的方法来实现这一点。

第一个是通过互操作。您需要安装一个“假装打印机”,例如打印到 PDF 的打印机,而不是将其发送到打印机。然而,这个需要打印成图像格式。Media 文件夹中文件的格式是 .emf,但我不肯定这是一个要求。

无论如何,如果以上方法可行,您可以嵌入该图片,几乎使用您从 Microsoft 链接的示例,只需更改“图标”的大小,该“图标”现在将成为文档的图像。

第二种可能性是将word文档作为一个进程打开,将文档大小设置为72%(或者使文档成为桌面屏幕上唯一的一个),然后抓取一个打印屏幕并将其剪切成文档并将其用作嵌入的图像。

作为记录,我不建议您执行上述任何操作,但这些是我看到的唯一选项。

如果有人对此有更好的解决方案,我会全力以赴。

最后,如果您决定继续进行此操作,如果您回复并告诉我您愿意,我将很乐意编写选项 2 的示例。

  • 卡斯帕

在此处输入图像描述

于 2013-04-22T13:39:42.950 回答
2

围绕 open xml 有一个很好的包装 API(Document Builder 2.2),专门设计用于合并文档,可以灵活地选择要合并的段落等。你可以从这里下载。

使用此工具,您可以根据需要嵌入另一个 Word 文档的段落或整个 Word 文档。

有关如何使用它的文档和屏幕截图在这里

希望这可以帮助。

于 2013-04-18T12:35:12.450 回答