Récupérer une image d'un PowerPoint [Résolu]

Signaler
Messages postés
8
Date d'inscription
mercredi 12 mars 2008
Statut
Membre
Dernière intervention
13 mars 2012
-
Messages postés
8
Date d'inscription
mercredi 12 mars 2008
Statut
Membre
Dernière intervention
13 mars 2012
-
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

Messages postés
8
Date d'inscription
mercredi 12 mars 2008
Statut
Membre
Dernière intervention
13 mars 2012

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 !
Messages postés
1540
Date d'inscription
lundi 26 mai 2003
Statut
Membre
Dernière intervention
1 août 2013
12
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.
Messages postés
8
Date d'inscription
mercredi 12 mars 2008
Statut
Membre
Dernière intervention
13 mars 2012

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 !