2011-02-02 13 views
5

Zgodnie z wymaganiami projektu musimy przekonwertować obrazy z dokumentu tekstowego na obiekt bitmapowy. Aby to osiągnąć, staraliśmy się przekonwertować obiekt inlineshape z Microsoft.Office.Interop.Word dll na bitmapę. Jednak nie można uzyskać sukcesu, uzyskując obiekt schowka jako wartość null. Proszę znaleźć kod, który próbowaliśmy, jak poniżej;Konwersja obrazów z dokumentu tekstowego na obiekt bitmapowy

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)); 
       } 
      } 
     }   
    } 
} 

Czy ktoś pracował nad konwertowaniem obrazów słownych na bitmapy? Byłaby to wielka pomoc, gdybyś poprowadził nas, jak przekonwertować obrazy z dokumentu tekstowego do obiektu bitmapowego.

Odpowiedz

0

Spróbuj tego.

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

tam dwa schowka.

Zwykle używamy System.Windows.Forms.Clipboard, ale to jest do bani.

Zamiast tego należy użyć obiektu PresentationCore do swoich referencji.

(w moim przypadku C: Program Files \ \ referencyjny zwoje \ Microsoft \ Framework.NETFramework \ v4.0 \ Profile \ Client \ PresentationCore.dll)