2011-08-22 59 views
2

在其保存到一个文件夹,我用C#.net 2.0,Office 2010和Visual Studio 2005的提取嵌入Excel中的“PDF”文件,并使用C#

工作,我有一个Excel文件嵌入.pdf.doc文件。
我能够读取并保存.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文件并将其保存到一个文件夹,在此先感谢。

+0

根据[this](http://social.msdn.microsoft.com/forums/en-US/vsto/thread/85ef2249-0344-42f5-8dec-e7c09f98c62b/)你需要的可能是不可能的。 –

回答

3

用于Word文档的代码假定了解嵌入式OLE对象的内容,并使用Word本身来保存该文档。由于MS Office中没有原生的PDF编辑器,因此没有简单的方法可以对PDF执行相同的操作,正如@ Shadow Wizard的链接所指出的那样。

仍然有办法获取数据;例如,如果您使用的是更新的.xslx格式(与.xls格式相反),则事情更容易(或至少更明显)。 .xslx文件实际上是一个Office Open XML文件,您可以使用类似Open XML SDK的文件来操作它。

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

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

+2

从.xlsx手动提取使用.pdf工作得很好:Extract xl/embeddings/oleObjectN.bin;在君主中开放;从开始删除字节(不包括)“%PDF”;删除尾随的00个字节;另存为some.pdf。 –

相关问题