如何将此对象保存到文件?

时间:2011-02-21 13:40:46

标签: c# interop ms-word

我有一些包含对象的word文档。我正在测试一个有3个pdf文件(wordApp.Selection.InlineShapes.Count匹配这个),但是我无法从对象获取任何信息。如何将其保存到磁盘?感谢任何帮助,因为inlineShape.OLEFormat.IconLabel在所有3个实例中都是空字符串。

        var wordApp = new Word.Application();
        object confirmConversions = false;
        object readOnly = true;

        object missing = Type.Missing;
        this.document = wordApp.Documents.Open(
            ref fn, ref confirmConversions, ref readOnly,
            ref missing, ref missing, ref missing,
            ref missing, ref missing, ref missing,
            ref missing, ref missing, ref missing,
            ref missing, ref missing, ref missing,
            ref missing);

        string applicationName = null;

        foreach (Microsoft.Office.Interop.Word.InlineShape inlineShape in this.document.InlineShapes)
        {
            applicationName = inlineShape.OLEFormat.IconLabel;
        }

2 个答案:

答案 0 :(得分:2)

如果您愿意使用第三方控件,可以使用Aspose.Words轻松完成:

         Aspose.Words.Document d = new Document(@"C:\users\john\desktop\embeddedPDF.docx");
        foreach (Aspose.Words.Drawing.Shape shp in d.GetChildNodes(NodeType.Shape, true))
        {
        shp.OleFormat.Save(@"C:\Temp\testoutput.pdf");
        }

答案 1 :(得分:1)

以下是我发现的here帖子的片段,其中解释了为实现此目的而需要采取的方法:

  

任何可嵌入的文件   文档作为OLE对象即可   提取。但是,我们可能不会   能够为您提供简单的代码   例如,如果技术没有   属于我们(例如Adobe Acrobat   文件)。

     

我们正在使用Office对象做什么   正在激活对象然后   利用暴露的   IDispatch接口让我们可以使用   COM互操作直接沟通   使用对象的编程模型。   碰巧,Office应用程序   通常会暴露SaveAs方法   我们可以调用保存文件   题。穿过办公室   这种方式的编程模型是一个   方便的快捷方式,可以保存   嵌入的物体很少   码。

     

我怀疑Adobe Acrobat暴露了一个   类似的编程模型因为   有一个Adobe Acrobat类型   图书馆。你将不得不浏览   键入库以查看它是否暴露了一些   一种保存或另存为方法。如果它   你可以添加它作为参考   您的项目(通过COM参考   “添加引用”对话框的选项卡   Visual Studio)并采取类似的方式   吉在他的帖子中建议的方法   以上。   (continues...)