2011-02-14 11 views
6

Algunas presentaciones de Powerpoint contienen películas incorporadas. Cómo exportar películas desde la presentación (u obtener una ruta al archivo de película) usando C# (VSTO u Oficce COM Api)?Exportar películas de Powerpoint a un archivo en C#

+0

Dado que las películas están incrustados, no hay un camino para ellos. Son parte del archivo PPTX en sí. Puede obtener los medios integrados (películas y sonido) en un PPTX descomprimiéndolo. Profundiza en la estructura de carpetas de los archivos descomprimidos y habrá una carpeta multimedia. Los sonidos/videos estarán dentro de eso. Sin embargo, no tendrán los nombres de archivo originales. En cambio, tendrán nombres como Media1.mov, etc. –

Respuesta

5

Aquí es demostración simple de hacer esto:

no se olvide de añadir una referencia a la API de PowerPoint COM (Microsoft PowerPoint 12.0 Object Library).

using PowerPoint = Microsoft.Office.Interop.PowerPoint; 
using Office = Microsoft.Office.Core; 

entonces se puede obtener la ruta de películas como esta

private void button1_Click(object sender, EventArgs e) 
    { 
     PowerPoint.Application app = new PowerPoint.Application(); 
     app.Visible = Office.MsoTriState.msoTrue; 
     //open powerpoint file in your hard drive 
     app.Presentations.Open(@"e:\my tests\hello world.pptx"); 

     foreach (PowerPoint.Slide slide in app.ActivePresentation.Slides) 
     { 
      PowerPoint.Shapes slideShapes = slide.Shapes; 
      foreach (PowerPoint.Shape shape in slideShapes) 
      { 
       if (shape.Type == Office.MsoShapeType.msoMedia && 
        shape.MediaType == PowerPoint.PpMediaType.ppMediaTypeMovie) 
       { 
        //LinkFormat.SourceFullName contains the movie path 
        //get the path like this 
        listBox1.Items.Add(shape.LinkFormat.SourceFullName); 
        //or use System.IO.File.Copy(shape.LinkFormat.SourceFullName, SOME_DESTINATION) to export them 
       } 
      } 
     } 
    } 

espero que esto ayudará.

[Editar:]

respecto Steve comentario si quieres sólo las películas incrustados, que necesita sólo para descomprimir el archivo .pptx como cualquier otro archivo zip (por ejemplo, utilizando DotNetZip) y buscar vídeos incrustados en esta ruta ([Nombre_archivo_de_PowerPoint] \ ppt \ media)

+2

Desafortunadamente, no lo hará. La pregunta original especificaba que los videos estaban incrustados. Este ejemplo proporcionará la ruta a videos vinculados (pero no integrados). –

+0

Creo que quiso decir videos enlazados en esta pregunta porque obtener videos incrustados es aún más fácil y no necesita la aplicación COM de Office, simplemente descomprime el archivo .pptx como cualquier otro archivo zip (por ejemplo, usando DotNetZip) y busca videos incrustados en esta ruta ([Nombre de archivo de PowerPoint] \ ppt \ media) –

+0

Sí; Mencioné el truco de descomprimir un comentario en la publicación original, pero lo has hecho mejor y has proporcionado la ruta real dentro del zip. ¡Gracias! –

Cuestiones relacionadas