2011-02-02 16 views
5

Come da requisiti di progetto, è necessario convertire le immagini dal documento word in oggetto bitmap. Per raggiungere questo obiettivo, abbiamo provato a convertire l'oggetto inlineshape da Microsoft.Office.Interop.Word dll in bitmap. Tuttavia non è possibile ottenere il successo, ottenendo l'oggetto appunti come null. Si prega di trovare il codice che abbiamo provato come di seguito;Conversione di immagini da documento word in oggetto bitmap

using System.Drawing; 
using Microsoft.Office.Interop.Word; 
namespace WordApp1 
{ 
    class Program 
    { 
     static void Main(string[] args) 
     { 
      Application wordApp = (Application)System.Runtime.InteropServices.Marshal.GetActiveObject("Word.Application"); 
      Documents documents = wordApp.Documents; 

      Document d = null; 
      foreach (Document document in documents) 
      { 
       if (document.ActiveWindow.Caption.Contains("{Word document name}")) 
       { 
       d = document; 
       } 
      } 

      foreach (InlineShape shape in d.InlineShapes) 
      { 
       shape.Range.Select(); 
       d.ActiveWindow.Selection.Range.CopyAsPicture(); 
       System.Windows.Forms.IDataObject dobj = System.Windows.Forms.Clipboard.GetDataObject(); //Getting clipboard object as null 
       if(dobj.GetDataPresent(typeof(System.Drawing.Bitmap))) 
       { 
       Bitmap bmp; 
       System.IO.MemoryStream ms = new System.IO.MemoryStream(); 
       bmp = (Bitmap)dobj.GetData(typeof(System.Drawing.Bitmap)); 
       } 
      } 
     }   
    } 
} 

Qualcuno ha lavorato sulla conversione di immagini bitmap in parola? Sarebbe di grande aiuto se tu potessi guidarci su come procedere con la conversione di immagini dal documento word in oggetto bitmap.

risposta

0

Prova questo.

foreach (InlineShape shape in d.InlineShapes)    
{ 
    if (shape != null) 
    { 
     shape.Range.Select(); 
     d.ActiveWindow.Selection.Copy(); 
     Bitmap bitmap = new Bitmap(Clipboard.GetImage()); 
    } 
} 
0

Ce ne sono due Appunti.

Normalmente useremmo System.Windows.Forms.Clipboard, ma fa schifo.

Utilizzare System.Windows.Clipboard invece, è sufficiente aggiungere PresentationCore ai riferimenti.

(nel mio caso, C: \ Programmi \ Assiemi di riferimento \ Microsoft \ Framework.NETFramework \ v4.0 \ Profile \ Client \ PresentationCore.dll)

Problemi correlati