extraer la imagen del archivo de palabra

He estado intentando el siguiente código C # para extraer la imagen del archivo doc pero no funciona:

object missing = System.Reflection.Missing.Value; Microsoft.Office.Interop.Word.Application oWord = new Microsoft.Office.Interop.Word.Application(); Microsoft.Office.Interop.Word.Document oDoc = new Microsoft.Office.Interop.Word.Document(); oWord.Visible = false; object str1 = "C:\\doc.doc"; oDoc = oWord.Documents.Open(ref str1, 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, ref missing); if (oDoc.InlineShapes.Count > 0) { for (int j = 0; j < oDoc.InlineShapes.Count; j++) { oWord.ActiveDocument.Select(); oDoc.ActiveWindow.Selection.CopyAsPicture(); IDataObject data = Clipboard.GetDataObject(); if (data.GetDataPresent(typeof(System.Drawing.Bitmap))) { object bm = data.GetData(DataFormats.Bitmap); Bitmap bmp; bmp = (Bitmap)data.GetData(typeof(System.Drawing.Bitmap)); bmp.Save("C:\\test.bmp"); } } 

¿Alguien puede dar el código correcto para extraer la imagen del archivo de palabras?

 using System; using System.Drawing; using System.IO; using System.Threading; using Page = System.Web.UI.Page; using Microsoft.Office.Interop.Word; using Microsoft.VisualBasic.Devices; public partial class ReadIMG : System.Web.UI.Page { private Application m_word; private int m_i; protected void Page_Load(object sender, EventArgs e) { object missing = Type.Missing; object FileName = Server.MapPath("~/LectureOrig/Word.docx"); object readOnly = true; m_word = new Application(); m_word.Documents.Open(ref FileName, ref missing, ref readOnly, 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); try { for (int i = 1; i <= m_word.ActiveDocument.InlineShapes.Count; i++) { m_i = i; // CopyFromClipboardShape(); Thread thread = new Thread(CopyFromClipbordInlineShape); thread.SetApartmentState(ApartmentState.STA); thread.Start(); thread.Join(); } } finally { object save = false; m_word.Quit(ref save, ref missing, ref missing); m_word = null; } } protected void CopyFromClipbordInlineShape() { InlineShape inlineShape = m_word.ActiveDocument.InlineShapes[m_i]; inlineShape.Select(); m_word.Selection.Copy(); Computer computer = new Computer(); //Image img = computer.Clipboard.GetImage(); if (computer.Clipboard.GetDataObject() != null) { System.Windows.Forms.IDataObject data = computer.Clipboard.GetDataObject(); if (data.GetDataPresent(System.Windows.Forms.DataFormats.Bitmap)) { Image image = (Image)data.GetData(System.Windows.Forms.DataFormats.Bitmap, true); image.Save(Server.MapPath("~/ImagesGet/image.gif"), System.Drawing.Imaging.ImageFormat.Gif); image.Save(Server.MapPath("~/ImagesGet/image.jpg"), System.Drawing.Imaging.ImageFormat.Jpeg); } else { LabelMessage.Text="The Data In Clipboard is not as image format"; } } else { LabelMessage.Text="The Clipboard was empty"; } } 

Copia de código de Cómo extraer imágenes del archivo Doc (Word) en C #?

Otra opción si es un archivo .docx :

  1. Cambie el nombre del archivo a .zip
  2. Extrae los contenidos
  3. Busque el siguiente directorio en la palabra / medios extraídos de la carpeta

Sí, no es la forma C # de hacerlo tal como se publicó, pero incluso escribir el código para realizar los 3 pasos anteriores sería una forma de automatizar el proceso si eso es lo que estás buscando.

Aquí hay una versión local / no de página web.

La mayoría de este código se copia de: http://www.csharphelp.com/2007/05/save-picture-from-clipboard-to-file-using-c/ – más algunas líneas de la respuesta de Ekk.

 InlineShape inlineShape = m_word.ActiveDocument.InlineShapes[m_i]; inlineShape.Select(); m_word.Selection.Copy(); if (Clipboard.GetDataObject() != null) { IDataObject data = Clipboard.GetDataObject(); if (data.GetDataPresent(DataFormats.Bitmap)) { Image image = (Image)data.GetData(DataFormats.Bitmap,true); image.Save("image.bmp",System.Drawing.Imaging.ImageFormat.Bmp); image.Save("image.jpg",System.Drawing.Imaging.ImageFormat.Jpeg); image.Save("image.gif",System.Drawing.Imaging.ImageFormat.Gif); } else { MessageBox.Show("The Data In Clipboard is not as image format"); } } else { MessageBox.Show("The Clipboard was empty"); }