如何通过OpenXML SDK将word文档嵌入到另一个word文档中,但是显示内容,而不是单词的图标?这样,就像我们在word中手动执行:从文件插入对象 - >没有检查“显示为图标”?
我找到了这个article,但它使用了一个图标。我也尝试使用OpenXML SDK Productivity Tool,但只显示生成的二进制数据。
编辑: 我使用以下代码:
DrawAspect = OleDrawAspectValues.Content
然后我添加图片部分:
var imagePart = mainDocumentPart.AddNewPart<ImagePart>("image/x-emf", imagePartId);
GenerateImagePart(imagePart);
但是我的图片部分 - 只是一个字的图标字节数组。 因此,在这种情况下发生以下情况:当我打开生成的文档时,它将嵌入文档显示为图标,但是当我双击此嵌入文档,编辑它并保存更改时,嵌入的文档显示为内容,所以也许它是可能以某种方式显示此内容而无需编辑嵌入文档?我应该使用word的图标的字节数组而不是doc的截图字节数组吗? 我不确定我是否清楚,所以请询问
答案 0 :(得分:3)
我担心你所要求的几乎是不可能的。 关于图标和嵌入文件之间的单词文件的唯一区别是图像。 当您不使用图标Word时,只需截取您要嵌入的文档的屏幕截图并插入代替Icon图形。
我上传了一个我从我制作的Word文件中抓取的示例。在.docx文件中的 / media 文件夹中找到了这个小宝石。
所以基本上,如果你不能使用Icon,那么解决这个问题的唯一选择就是以某种方式获取你要嵌入的文件的图片并插入而不是图标图像。
你如何做到这一点不可能。首先,open xml sdk不包含这样的功能。我也试过玩办公室互操作,但没有运气。
我只看到两种可能的方法来实现这一目标。
第一个是通过Interop。您需要安装“假装打印机”,例如打印到PDF而不是将其发送到打印机的打印机。然而,这个需要打印到图像格式。 Media文件夹中的文件格式为.emf,但我并不认为这是一项要求。
无论如何,如果上面某种可能的话你可以嵌入那张图片,几乎使用你从微软链接的例子,只需改变“icon”的大小,现在就是文档的图像。
第二种可能性是打开单词文档作为一个过程,将文档大小设置为72%(或任何使文档成为桌面屏幕上唯一的文档)并抓住打印屏幕并将其剪切为只是文档和用作嵌入图像的用途。
为了记录,我不建议你做以上任何一项,但是我看到的唯一的选择。
如果某人有更好的解决方案,我会全力以赴。
最后,如果您决定继续使用此功能,我很乐意为您编写第2号选项的示例代码,如果您回复并告诉我您愿意这样做。
答案 1 :(得分:2)