2011-08-22 57 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。 –

相關問題