提取embedded在Excel中的'pdf'文件并将其保存到使用c#

我正在使用C#.net 2.0,Office 2010和Visual Studio 2005。

我有一个embedded.pdf.doc文件的excel文件。
我能够读取并保存.doc文件与此代码:

 if (inlineShape.OLEFormat.progID.StartsWith("word.document.")) { inlineShape.OLEFormat.Activate(); Word.Document document = inlineShape.OLEFormat.Object as Word.Document; FileInfo wfi = new FileInfo(fileName); object wfileName = (object)(explodedDirectory + wfi.Name + "." + docCount.ToString() + ".doc"); object fileFormat = Word.WdSaveFormat.wdFormatDocument; document.SaveAs(ref wfileName, ref fileFormat, 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, ref _missing); document.Close(ref saveChanges, ref originalFormat, ref routeChanges); document = null; } 

但是我无法用.pdf做任何事情。

我需要提取.pdf文件并将其保存到一个文件夹,提前感谢。

您正在使用的Word文档代码假定知识的embedded的OLE对象的内容,并使用Word本身来保存该文档。 由于MS Office中没有原生的PDF编辑器,所以PDF Shadow也没有简单的方法,就像@Shadow Wizard的链接指出的一样。

仍然有办法获得这些数据。 例如,如果您使用的是更新的.xslx格式(而不是.xls格式),则事情要容易得多(或者至less更明显)。 .xslx文件实际上是一个Office Open XML文件,您可以使用Open XML SDK来操纵它。

另一种方法是尝试从.xslx文件中提取文件 – 这可以很容易地完成,因为它本质上只是一个.zip文件。 要手动操作,请将.xlsx文件重命名为.zip并将其解压缩。 在里面,你会发现一个像“xl”的文件夹,里面有“embeddings”。 您的PDF文档将在这里,不幸被编码为一个OLE对象。 然后你可以尝试一些从中获取数据, 这里就是一个例子。

不幸的是,我对这里的具体情况不够了解,否则我会给出更直接的答案。 希望这可以帮助。