2009-04-21 15 views
5

Estoy usando el siguiente código para convertir un documento de Word en un archivo de imagen. Pero la imagen parece demasiado grande y el contenido no encaja: ¿hay alguna forma de representar la imagen o guardarla?Guardar un documento de Word como una imagen

private void btnConvert_Click(object sender, EventArgs e) 
    { 
     if (string.IsNullOrEmpty(txtFileName.Text)) 
     { 
      MessageBox.Show("Choose a document to convert", "Error", MessageBoxButtons.OK, MessageBoxIcon.Error); 
      txtFileName.Focus(); 
      return; 
     } 

     ApplicationClass wordApp = new ApplicationClass(); 
     object objectMissing = Missing.Value; 

     try 
     { 
      object fileName = txtFileName.Text; 
      FileStream fs = new FileStream(fileName.ToString(), FileMode.Open, FileAccess.Read); 
      Byte[] data = new Byte[fs.Length]; 
      fs.Read(data, 0, data.Length); 

      Document doc = wordApp.Documents.Open(ref fileName, ref objectMissing, ref objectMissing, ref objectMissing, ref objectMissing, ref objectMissing, ref objectMissing, 
            ref objectMissing, ref objectMissing, ref objectMissing, ref objectMissing, ref objectMissing, ref objectMissing, 
            ref objectMissing, ref objectMissing, ref objectMissing); 


      byte[] range = (byte[]) wordApp.ActiveDocument.Content.EnhMetaFileBits; 
      if (range != null) 
      { 
       MemoryStream ms = new MemoryStream(range); 
       Metafile mf = new Metafile(ms); 
       picImage.Height = mf.Height; 
       picImage.Width = mf.Width; 
       mf.Save("c:\\test.png", ImageFormat.Png); 
       picImage.Image = Image.FromFile("c:\\test.png"); 
      } 
     } 
     finally 
     { 
      wordApp.Quit(ref objectMissing, ref objectMissing, ref objectMissing); 
     } 
    } 

Respuesta

0

¿Qué le parece imprimir el documento como un TIFF utilizando el Microsoft Document Image Writer?

0

También puede cambiar el tamaño de la imagen programáticamente después de guardarla.

1

convertirlo a cualquier tamaño que lo hará, a continuación, utilizar ImageMagick: http://www.imagemagick.org/script/index.php para cambiar el tamaño o hacer lo que otros post-procesamiento que necesita (que puede hacer mucho)

3

Resultó ser muy simple:

private void renderImage(byte[] imageData) 
    { 
     using (MemoryStream ms = new MemoryStream(imageData)) 
     { 
      Image image = Image.FromStream(ms); 
      picImage.Image = image; 
     } 
    } 

Esto muestra la primera página como una imagen, pero debería ser lo suficientemente fácil como para representar también las otras páginas.

Gracias a todos los que respondieron

0

copiar el contenido a Powerpoint (si se puede copiar) y luego se puede guardar la diapositiva en una imagen de formato deseado

+3

esto no responde a la pregunta real , el OP claramente está pidiendo una solución programática. – twoleggedhorse

Cuestiones relacionadas