Récupérer une image d'un PowerPoint

Résolu
Christophe59193 Messages postés 8 Date d'inscription mercredi 12 mars 2008 Statut Membre Dernière intervention 13 mars 2012 - 13 févr. 2012 à 19:50
Christophe59193 Messages postés 8 Date d'inscription mercredi 12 mars 2008 Statut Membre Dernière intervention 13 mars 2012 - 14 févr. 2012 à 10:56
Bonjour tout le monde,

Alors aujourd'hui, je viens vous voir car je suis légèrement bloqué (pour ne pas dire complètement)

Je travaille actuellement avec PowerPoint (Microsoft.Office.Interop.PowerPoint). J'ai quelques soucis pour récupérer des éléments.

Jusqu'à présent, aucun soucis pour récupérer tout ce qui concerne le nombre de slides, les formes, les textes, etc. Mais les images, pas moyen de les récupérer !

Je vous mets le code que j'ai actuellement (pour la partie qui ne fonctionne pas):

if (PowerPoint.Slides[i].Shapes[j].Type == msoTriState.msoPicture)
{
    Image image;
    // Ici il faut mettre la forme n°j du slide n°i dans l'image
}


Cependant après de très longue recherche (par moi même et sur le web) pas le moyen de trouver comment faire (pour "caster" la forme en image).

Quelqu'un aurait-il une idée ou déjà eu le problème?

Merci d'avance

3 réponses

Christophe59193 Messages postés 8 Date d'inscription mercredi 12 mars 2008 Statut Membre Dernière intervention 13 mars 2012
14 févr. 2012 à 10:56
Solution trouvée:

PowerPoint.Shape shape = PresPpt.Slides[i].Shapes[j];
                                StringBuilder Images;
                                Images = new StringBuilder(Repertoire_slide.ToString() + "\");
                                Images.Append(compteur_image.ToString());
                                Images.Append(".jpg");
                                shape.Export(Images.ToString(), PpShapeFormat.ppShapeFormatJPG, (int)PresPpt.Slides[i].Master.Width, (int)PresPpt.Slides[i].Master.Height, PpExportMode.ppRelativeToSlide);


Compteur_image servira pour différencier les images s'il y en a plusieurs.
Après il est possible de créer des sous répertoires par slide pour être plus clair etc.

Merci quand même !
cs_jopop Messages postés 1540 Date d'inscription lundi 26 mai 2003 Statut Membre Dernière intervention 1 août 2013 12
14 févr. 2012 à 09:15
Salut,

je ne connais pas du tout ce namespace, mais je suis pas mauvais avec la MSDN ^^
Voilà ce que j'ai trouvé :
- l'interface Shape possède une méthode Copy qui permet de copier l'élément dans le presse-papier,
- la classe Clipboard possède une méthode GetDataObject qui permet de récupérer la donnée (IDataObject) dans le presse-papier,
- la classe IDataObject possède une méthode GetData qui permet de récupérer la donnée selon un format que tu dois pouvoir directement caster en Image.

Je n'ai pas trouvé de méthode directe pour récupérer des images depuis PowerPoint. Excel possède bien une Shape.CopyPicture(), mais pas PowerPoint.
Christophe59193 Messages postés 8 Date d'inscription mercredi 12 mars 2008 Statut Membre Dernière intervention 13 mars 2012
14 févr. 2012 à 10:56
Solution trouvée:

PowerPoint.Shape shape = PresPpt.Slides[i].Shapes[j];
StringBuilder Images;
Images = new StringBuilder(Repertoire_slide.ToString() + "\");
Images.Append(compteur_image.ToString());
Images.Append(".jpg");
shape.Export(Images.ToString(), PpShapeFormat.ppShapeFormatJPG, (int)PresPpt.Slides[i].Master.Width, (int)PresPpt.Slides[i].Master.Height, PpExportMode.ppRelativeToSlide);

Compteur_image servira pour différencier les images s'il y en a plusieurs.
Après il est possible de créer des sous répertoires par slide pour être plus clair etc.

Merci quand même !
Rejoignez-nous