Partager via


Présentation du format de fichier binaire PowerPoint MS-PPT (traduction automatique)

Important

Cet article a été traduit automatiquement, voir l’avertissement. Vous pouvez consulter la version en anglais de cet article ici.

Résumé Découvrez le format de fichier binaire MS-PPT utilisé dans les précédentes versions publiées des produits Microsoft PowerPoint, y compris les structures de base et les concepts clés pour interagir avec PowerPoint via un programme.

Dernière modification : jeudi 23 juin 2011

S’applique à : Office 2007 | Office 2010 | PowerPoint 2010 | VBA

Dans cet article
Vue d'ensemble du Format de fichier MS PPT
Conclusion
Ressources supplémentaires

**S'applique à:**Microsoft Office PowerPoint 2003 | Microsoft PowerPoint 2002 | Microsoft PowerPoint 2000 | Microsoft PowerPoint 97

Publié :   Février 2011

Fournie par :   Microsoft Corporation

Sommaire

  • Vue d'ensemble du Format de fichier MS PPT

  • Composants clés du Format de fichier MS PPT

  • Extraction de contenu à partir d'un fichier PowerPoint

    • Récupération de texte dans les fichiers PowerPoint

    • Récupération des diapositives à partir de fichiers PowerPoint

    • Annuler l'historique dans le Format de fichier MS PPT

  • Conclusion

  • Ressources supplémentaires

Cet article explique les structures et des procédures d'utilisation de fichiers PPT-MS. Il s'agit de la partie d'une série d'articles qui présentent les formats de fichier binaire utilisés par les produits Microsoft Office. Ces articles sont conçus pour être utilisés conjointement avec le Office File Format Documents disponible sur MSDN.

Vue d'ensemble du Format de fichier MS PPT

Le format de fichier binaire MS PPT est utilisé par Microsoft Office PowerPoint 2003, Microsoft PowerPoint 2002, Microsoft PowerPoint 2000 et Microsoft PowerPoint 97. Il commence par un flux de l'utilisateur actuel, puis un flux de Document PowerPoint et un flux d'images, ainsi que certains flux facultatif pour les informations de résumé, les données XML personnalisées et les signatures numériques. La plupart du contenu effectif réside dans des conteneurs de la diapositive à l'intérieur du flux de Document PowerPoint. Le flux de l'utilisateur en cours contient l'atome d'utilisateur en cours, qui contient les données du système, la version et l'utilisateur. Le flux d'images contient des images incorporées sont référencées qu'ils apparaissent dans des conteneurs de la diapositive. La plus petite unité de données dans ce format est un enregistrement.

Données de fichier sont stockées séquentiellement par modifications par l'utilisateur. Cela signifie que si vous souhaitez recréer uniquement la version actuelle du fichier, vous pouvez extraire simplement le contenu de la dernière modification de l'utilisateur et aucune des données avant leur. De même, vous pouvez obtenir les versions précédentes du fichier en accédant à des modifications de l'utilisateur précédent dans le flux.

Notes

La méthode recommandée pour effectuer la plupart des tâches de programmation dans Microsoft PowerPoint consiste à utiliser le PowerPoint Primary Interop Assemblies. Il s'agit d'un ensemble de.NET qui fournit un modèle d'objet complet pour travailler avec Microsoft PowerPoint. Cette série d'articles traite uniquement des scénarios avancés, tels que l'où Microsoft PowerPoint n'est pas installé.

Composants clés du Format de fichier MS PPT

Voici les principales structures d'intérêt dans un fichier .ppt. Toutes les structures résident dans le flux de Document PowerPoint, sauf indication contraire.

  • CurrentUserAtom

    Un atom record qui spécifie des informations sur le dernier utilisateur à modifier le fichier et où se trouve le plus récent user edit. C'est le seul enregistrement dans le CurrentUser stream.

  • enregistrement UserEditAtom

    L'enregistrement de UserEditAtom inclut, entre autres choses, des pointeurs à l'enregistrement de PersistDirectoryAtom pour la modification en cours et à l'enregistrement UserEditAtom précédent.

  • enregistrement PersistDirectoryAtom

    L'enregistrement PersistDirectoryAtom spécifie un persiste répertoire objet, qui est une table des identificateurs d'objet persist et conserver des offsets de flux où vous pouvez trouver des objets. Chaque modification de l'utilisateur stocke un répertoire objet permanent qui identifie où vous trouverez tous les objets nouveaux et modifiés persist.

  • structure PersistDirectoryEntry

    Structures PersistDirectoryEntry font partie d'un enregistrement de PersistDirectoryAtom et sont incrémentés. Par exemple : persistDirEntry[0], persistDirEntry[1]. Il spécifie une table compressée de séquentiel persistent des identificateurs d'objet et conserver des objets associés à des offsets de flux.

    Les 20 premiers bits donner l'ID d'un objet persist. Les 12 bits suivants donnent le nombre d'entrées de décalage de maintenir la structure currentPersistDirectoryEntry. Le reste de la structure PersistDirectoryEntry se compose d'entrées de décalage, chacun d'entre eux utilisent 4 octets. S'il existe plusieurs structures PersistOffsetEntry, chaque entrée successive applique l'objet de Persist avec un ID d'un plus grand que celui du précédent.

  • structure DocumentContainer

    Il s'agit d'un enregistrement de conteneur qui spécifie des informations sur le document. Il comprend des listes de diapositives, des notes, des sons, des éléments graphiques et d'autres contenus. Tout le texte de plan pour la modification en cours est stocké dans la liste des diapositives de la structure DocumentContainer. Texte à l'intérieur de formes est stocké dans les enregistrements de Shapes.

  • structure MainMasterContainer

    Il s'agit d'un enregistrement de conteneur qui spécifie un masque des diapositives principal. Le masque des diapositives principal définit la mise en forme et un contenu, tels que des graphiques de modèle pour une diapositive de présentation.

  • structure SlideContainer

    Il s'agit de l'enregistrement de conteneur pour une diapositive de la présentation. Il inclut des paramètres de transition, en-tête et pied de page, des pointeurs et mise en forme des éléments graphiques et une structure SlideAtom qui spécifie les formes d'espace réservé utilisés dans la disposition de diapositive.

  • structure SlideListWithTextContainer

    Une structure SlideWithTextContainer spécifie une liste d'enregistrements SlideListWithTextSubContainerOrAtom, chacun d'eux contient des références aux diapositives de présentation et des enregistrements pour le texte est qu'ils contiennent.

  • structure de TextCharsAtom et TextBytesAtom

    Voici les deux types d'enregistrements SlideListWithTextSubContainerOrAtom qui contiennent des caractères de texte. Chacune contient un en-tête d'enregistrement de 8 octets, suivi d'une série de caractères Unicode partiels ou Unicode.

  • structure DrawingGroupContainer

    Il s'agit de la partie de la structure DocumentContainer qui spécifie les images, WordArt et tout autre contenu graphique.

  • structure RecordHeader

    Une structure RecordHeader est une structure de 8 octets au début de chaque conteneur enregistrements et atom dans le fichier. Il contient quatre champs : recVer, recInstance, recType et recLength. Les deux dernières sont le plus intéressant. Le champ recType Spécifie le type de l'enregistrement en cours, et le champ recLen donne la longueur en octets.

Extraction de contenu à partir d'un fichier PowerPoint

Extraction de contenu à partir d'un document PowerPoint qui utilise le format de fichier MS PPT varie selon le type de contenu que vous souhaitez récupérer et dans quelle condition. Vous pouvez obtenir sans discernement tout le texte à partir d'un fichier .ppt à l'aide d'une ou deux pages de code, mais qui ne conserve pas la mise en forme, les graphiques, les transitions ou même des limites de la diapositive. Vous pourriez extraire toutes les images clipart, par exemple, avec une technique similaire, même si cela est abordée dans cet article. Pour obtenir le contenu à chaque diapositive, vous devez identifier les modifications en cours par la lecture d'enregistrements PersistDirectoryEntry.

Récupération de texte dans les fichiers PowerPoint

Pour récupérer le texte brut à partir d'une présentation PowerPoint

  1. Ouvrir le flux de Document PowerPoint.

  2. Pour chaque enregistrement :

    1. Lire l'en-tête de l'enregistrement.

    2. Si le champ recType est TextCharsAtom (0x0FA0) ou TextBytesAtom (0x0FA8), lire le reste de l'enregistrement en tant que texte.

Récupération des diapositives à partir de fichiers PowerPoint

En théorie, vous pourriez reconstruire un jeu de diapositives avec la même approche que l'extraction de texte brut. Par exemple, en vérification en-têtes d'enregistrements pour recType = SlideContainer/DocumentContainer/NotesContainer /, mais cette propriété renvoie une collection aveugle de diapositives actives et les diapositives obsolètes à chaque état d'édition avec aucun moyen de les différencier. Mais si vous commencez par créer un répertoire d'objet persist, vous avez des pointeurs vers tout le contenu en cours et aucun contenu obsolète.

Pour récupérer des diapositives et leur contenu à partir de fichiers PowerPoint

  1. Créez un répertoire d'objet persist.

    1. Créer une structure de données, comme un dictionnaire, pour stocker les deux colonnes de données liées. La première colonne est de maintenir les ID d'objet, la seconde est pour les décalages où ils se trouvent dans le flux.

    2. Lire la structure de CurrentUserAtom à partir du flux de CurrentUser. 16–19 Octets de la structure CurrentUserAtom pour spécifier le champ offsetToCurrentEdit.

    3. Ouvrir le flux de Document PowerPoint et lire la structure de UserEditAtom à partir de l'offset spécifié par le champ CurrentUserAtom.offsetToCurrentEdit. Octets 16–19 pour spécifier le champ offsetLastEdit et 20–23 octets pour spécifier le champ offsetPersistDirectory.

    4. Lire la structure PersistDirectoryAtom à partir de l'offset fourni par le champ UserEditAtom.offsetPersistDirectory.

    5. Remplir la structure de données que vous avez créé en utilisant les valeurs d'ID et les décalages de chaque structure PersistDirectoryEntry. Dans les cas dans lequel une structure PersistDirectoryEntry possède plus d'un décalage, affecter à chaque contrepartie successive une valeur d'ID une plus grande que le code précédent dans la table.

    6. Passez à l'offset dans le flux de documents PowerPoint spécifié par le champ UserEditAtom.offsetLastEdit et de lire la structure UserEditAtom qui doit commencer.

    7. Répétez les trois étapes précédentes jusqu'à ce que vous exécutez des modifications par l'utilisateur. Ignorer les persistent entrées d'annuaire dont l'ID de valeurs de conflit avec les valeurs d'ID existants dans la table, que ceux-ci représentent les diapositives qui ont été écrasées.

  2. Accédez via le répertoire objet persist, vérifier les en-têtes d'enregistrement à chaque offset spécifié, et la lecture de chaque enregistrement de type = RT_Document. Il s'agit de la structure DocumentContainer.

  3. Dans la structure DocumentContainer, trouver la liste de diapositives, c'est-à-dire un enregistrement avec rh.recType = RT_SlideListWithText. Il s'agit d'un enregistrement de SlideListWithTextContainer, qui contient un tableau d'entrées SlideListWithTextSubContainerOrAtom.

  4. Lire la liste de la diapositive. Chaque structure SlidePersistAtom (type = rh.RT_SlidePersistAtom) vient avant les enregistrements qui contiennent le contenu pour cette diapositive. Tout enregistrement de rh.recType = RT_TextCharsAtom ou rh.recType = RT_TextBytesAtom contient du texte.

  5. Pour chaque structure SlidePersistItem dans la liste de la diapositive, créez une diapositive contenant le texte correspondant contenu.

Vous pouvez utiliser la même approche pour un autre contenu de la diapositive, telles que les informations de formatage, en-têtes et pieds de page et notes.

Annuler l'historique dans le Format de fichier MS PPT

En raison de la nature séquentielle du format de fichier binaire MS PPT, vous pouvez facilement restaurer des versions précédentes des fichiers PowerPoint.

Pour récupérer des versions précédentes d'un fichier PowerPoint

  1. Charger une copie du fichier PowerPoint en mémoire.

  2. À partir de la copie en mémoire, de lire l'enregistrement de CurrentUserAtom à partir du flux de CurrentUser.

  3. Dans le flux de Document PowerPoint, lire la structure UserEditAtom à partir de l'offset spécifié par le champ CurrentUserAtom.offsetToCurrentEdit.

  4. Lire la structure UserEditAtom précédente à partir de l'offset fourni par le champ UserEditAtom.offsetLastEdit.

  5. Supprimez tout après la structure UserEditAtom précédente.

  6. Mettre à jour la valeur du champ CurrentUserAtom.offsetToCurrentEdit.

  7. Enregistrez le fichier en utilisant un nom de fichier modifié. Pour parvenir aux précédentes versions connues, vous pouvez continuer de rétroaction jusqu'à ce que vous atteigniez la structure UserEditAtom correcte.

Conclusion

C'est juste un échantillon du format PPT-MS. Avec les outils fournis dans cet article, récupération de données simple doit être à votre portée. Avec supplémentaires d'exploration, vous pouvez commencer à récupérer des médias, mise en forme des informations et autres métadonnées et finalement remonter à enregistrer des opérations.

Ressources supplémentaires

Pour plus d’informations, consultez les ressources suivantes :

Notes

Avertissement traduction automatique : cet article a été traduit par un ordinateur, sans intervention humaine. Microsoft propose cette traduction automatique pour offrir aux personnes ne maîtrisant pas l’anglais l’accès au contenu relatif aux produits, services et technologies Microsoft. Comme cet article a été traduit automatiquement, il risque de contenir des erreurs de grammaire, de syntaxe ou de terminologie.