Utilisation des diapositives de notes
Cette rubrique décrit la classe du Kit de développement logiciel (SDK) Open XML pour Office NotesSlide et sa relation avec le schéma PresentationML au format de fichier Open XML.
Diapositives de notes dans PresentationML
La spécification ISO/IEC 29500 décrit l’élément PresentationML <notes/>
Open XML utilisé pour représenter les diapositives de notes dans un document PresentationML comme suit :
Cet élément spécifie l’existence d’une diapositive de notes avec ses données correspondantes. Une diapositive de notes contient tous les éléments courants de diapositive, ainsi que des propriétés supplémentaires qui sont spécifiques à l’élément notes.
Exemple : Considérez la diapositive de notes PresentationML suivante :
<p:notes>
<p:cSld>
…
</p:cSld>
…
</p:notes>
Dans l’exemple ci-dessus, un élément notes spécifie l’existence d’une diapositive de notes avec tous ses composants. Notez l’élément cSld qui spécifie les éléments courants pouvant apparaître pour tout type de diapositive, puis les éléments spécifiant des propriétés supplémentaires spécifiques à cette diapositive de notes.
© ISO/IEC 29500 : 2016
L’élément <notes/>
est l’élément racine du composant Diapositive des notes PresentationML. Pour plus d’informations sur la structure complète des composants et des éléments qui constituent un document PresentationML, voir Structure d’un document PresentationML.
Le tableau suivant répertorie les éléments enfants de l’élément utilisé lors de l’utilisation <notes/>
des diapositives de notes et des classes du Kit de développement logiciel (SDK) Open XML qui leur correspondent.
Élément PresentationML | Classe du Kit de développement logiciel (SDK) Open XML |
---|---|
<clrMapOvr/> |
ColorMapOverride |
<cSld/> |
CommonSlideData |
<extLst/> |
ExtensionListWithModification |
Le tableau suivant de la spécification ISO/IEC 29500 décrit les attributs de l'élément <notes/>
correspondant.
Attributs | Description |
---|---|
showMasterPhAnim (Afficher les animations d’espace réservé maître) |
Spécifie si des animations doivent être affichées ou non sur des espaces réservés de la diapositive principale. Les valeurs possibles pour cet attribut sont définies par le type de données schéma boolean XML W3C. |
showMasterSp (Afficher les formes maîtres) |
Spécifie si les formes figurant sur la diapositive principale doivent être affichées ou non sur les diapositives. Les valeurs possibles pour cet attribut sont définies par le type de données schéma boolean XML W3C. |
© ISO/IEC 29500 : 2016
NotesSlide du Kit de développement logiciel (SDK) Open XML
La classe du Kit de développement logiciel (SDK) NotesSlide
OXML représente l’élément <notes/>
défini dans le schéma de format de fichier Open XML pour les documents PresentationML. Utilisez la NotesSlide
classe pour manipuler des éléments individuels <notes/>
dans un document PresentationML.
Les classes qui représentent des éléments enfants de l’élément <notes/>
et qui sont donc couramment associées à la NotesSlide
classe sont indiquées dans la liste suivante.
Classe ColorMapOverride
La
ColorMapOverride
classe correspond à l’élément<clrMapOvr/>
. Les informations suivantes de la spécification ISO/IEC 29500 présentent l’élément<clrMapOvr/>
:Cet élément fournit un mécanisme avec lequel remplacer les jeux de couleurs répertoriés dans l’élément
<ClrMap/>
. Si l’élément<masterClrMapping/>
enfant est présent, le jeu de couleurs défini par le master est utilisé. Si l’élément<overrideClrMapping/>
enfant est présent, il définit un nouveau jeu de couleurs spécifique à la diapositive de notes parente, à la diapositive de présentation ou à la disposition des diapositives.
© ISO/IEC 29500 : 2016
Classe CommonSlideData
La
CommonSlideData
classe correspond à l’élément<cSld/>
. Les informations suivantes de la spécification ISO/IEC 29500 présentent l’élément<cSld/>
:Cet élément spécifie un conteneur pour le type d’informations de diapositive relatif à l’ensemble des types de diapositives. Toutes les diapositives partagent un ensemble commun de propriétés indépendantes du type de diapositive ; la description de ces propriétés pour une diapositive particulière est stockée dans le conteneur de
<cSld/>
la diapositive. Les données de diapositive spécifiques au type de diapositive indiqué par l’élément parent sont stockées ailleurs.Les données réelles dans
<cSld/>
décrivent uniquement la diapositive parente particulière ; il s’agit uniquement du type d’informations stockées qui est commun à toutes les diapositives.© ISO/IEC 29500 : 2016
Classe ExtensionListWithModification
La
ExtensionListWithModification
classe correspond à l’élément<extLst/>
. Les informations suivantes de la spécification ISO/IEC 29500 présentent l’élément<extLst/>
:Cet élément spécifie la liste d’extensions avec une capacité de modification dans laquelle toutes les extensions futures de type
<ext/>
d’élément sont définies. La liste des extensions et les extensions futures correspondantes sont utilisées pour étendre les possibilités de stockage de l’infrastructure PresentationML. Ceci permet à différents nouveaux types de données d’être stockés en mode natif dans l’infrastructure.[Remarque : l’utilisation de cet élément extLst permet à l’application de génération de stocker l’information indiquant si cette propriété d’extension a été modifiée. Fin de la remarque]
© ISO/IEC 29500 : 2016
Utilisation de la classe NotesSlide
Comme indiqué dans l’exemple de code du Kit de développement logiciel (SDK) Open XML qui suit, chaque instance de la NotesSlide
classe est associée à un instance de la NotesSlidePart classe, qui représente un composant de diapositive de notes, l’une des parties d’un package de fichier de présentation PresentationML et un composant requis pour chaque diapositive de notes dans un fichier de présentation. Chaque NotesSlide
classe instance peut également être associée à un instance de la NotesMaster classe, qui à son tour est associée à une partie de présentation nommée de même nom, représentée par la NotesMasterPart classe .
La NotesSlide
classe, qui représente l’élément <notes/>
, est donc également associée à une série d’autres classes qui représentent les éléments enfants de l’élément <notes/>
.
Parmi ces classes, comme indiqué dans l’exemple de code suivant, se trouvent la CommonSlideData
classe et la ColorMapOverride
classe . La ShapeTree classe et les Shape classes sont associées à la CommonSlideData
classe .
Exemple de code du Kit de développement logiciel (SDK) Open XML
Dans les extraits de code suivants, représente
P
l’espace de noms etD
l’espace de noms.
Dans l’extrait de code ci-dessous, une présentation est ouverte avec Presentation.Open
et la première SlidePart est récupérée ou ajoutée si la présentation n’a pas déjà de SlidePart
.
using (PresentationDocument presentationDocument = PresentationDocument.Open(pptxPath, true) ?? throw new Exception("Presentation Document does not exist"))
{
// Get the first slide in the presentation or use the InsertNewSlide.InsertNewSlideIntoPresentation helper method to insert a new slide.
SlidePart slidePart = presentationDocument.PresentationPart?.SlideParts.FirstOrDefault() ?? InsertNewSlideNS.InsertNewSlide(presentationDocument, 1, "my new slide");
// Add a new NoteSlidePart if one does not already exist
NotesSlidePart notesSlidePart = slidePart.NotesSlidePart ?? slidePart.AddNewPart<NotesSlidePart>();
Dans cet extrait de code, l’élément est NoteSlide
ajouté au NoteSlidePart
s’il n’en existe pas déjà un.
Le NotesSlide
constructeur de classe crée des instances de la CommonSlideData
classe .
Le CommonSlideData
constructeur de classe crée un instance de la classe, dont le ShapeTree constructeur crée à son tour des instances de classe supplémentaires : un instance de la NonVisualGroupShapeProperties classe, un instance de la GroupShapeProperties classe et un instance de la Shape classe.
// Add a NoteSlide to the NoteSlidePart if one does not already exist.
notesSlidePart.NotesSlide ??= new P.NotesSlide(
new P.CommonSlideData(
new P.ShapeTree(
new P.NonVisualGroupShapeProperties(
new P.NonVisualDrawingProperties() { Id = 1, Name = "" },
new P.NonVisualGroupShapeDrawingProperties(),
new P.ApplicationNonVisualDrawingProperties()),
new P.GroupShapeProperties(
new D.Transform2D(
new D.Offset() { X = 0, Y = 0 },
new D.Extents() { Cx = 0, Cy = 0 },
new D.ChildOffset() { X = 0, Y = 0 },
new D.ChildExtents() { Cx = 0, Cy = 0 })),
Le Shape
constructeur crée un instance de NonVisualShapePropertiesclasses , ShapePropertieset TextBody avec leurs éléments enfants requis. contient TextBody
le Paragraph, qui a un Run, qui contient le texte de la note. Le composant diapositive est ensuite ajouté au composant diapositive de notes.
new P.Shape(
new P.NonVisualShapeProperties(
new P.NonVisualDrawingProperties() { Id = 3, Name = "test Placeholder 3" },
new P.NonVisualShapeDrawingProperties(),
new P.ApplicationNonVisualDrawingProperties(
new P.PlaceholderShape() { Type = PlaceholderValues.Body, Index = 1 })),
new P.ShapeProperties(),
new P.TextBody(
new D.BodyProperties(),
new D.Paragraph(
new D.Run(
new D.Text("This is a test note!"))))))));
notesSlidePart.AddPart(slidePart);
Le composant de diapositive de notes créé avec le code ci-dessus contient le code XML suivant
<?xml version="1.0" encoding="utf-8"?>
<p:notes xmlns:p="http://schemas.openxmlformats.org/presentationml/2006/main">
<p:cSld>
<p:spTree>
<p:nvGrpSpPr>
<p:cNvPr id="1" name=""/>
<p:cNvGrpSpPr/>
<p:nvPr/>
</p:nvGrpSpPr>
<p:grpSpPr>
<a:xfrm xmlns:a="http://schemas.openxmlformats.org/drawingml/2006/main">
<a:off x="0" y="0"/>
<a:ext cx="0" cy="0"/>
<a:chOff x="0" y="0"/>
<a:chExt cx="0" cy="0"/>
</a:xfrm>
</p:grpSpPr>
<p:sp>
<p:nvSpPr>
<p:cNvPr id="3" name="test Placeholder 3"/>
<p:cNvSpPr/>
<p:nvPr/>
</p:nvSpPr>
<p:spPr/>
<p:txBody>
<a:bodyPr xmlns:a="http://schemas.openxmlformats.org/drawingml/2006/main"/>
<a:p xmlns:a="http://schemas.openxmlformats.org/drawingml/2006/main">
<a:r>
<a:t>This is a test note!</a:t>
</a:r>
</a:p>
</p:txBody>
</p:sp>
</p:spTree>
</p:cSld>
</p:notes>
Les extraits de code suivants ajoutent les requis NotesMasterPart et ThemePart s’ils sont manquants.
// Add the required NotesMasterPart if it is missing
NotesMasterPart notesMasterPart = notesSlidePart.NotesMasterPart ?? notesSlidePart.AddNewPart<NotesMasterPart>();
// Add a NotesMaster to the NotesMasterPart if not present
notesMasterPart.NotesMaster ??= new NotesMaster(
new P.CommonSlideData(
new P.ShapeTree(
new P.NonVisualGroupShapeProperties(
new P.NonVisualDrawingProperties() { Id = 1, Name = "New Placeholder" },
new P.NonVisualGroupShapeDrawingProperties(),
new P.ApplicationNonVisualDrawingProperties()),
new P.GroupShapeProperties())),
new P.ColorMap()
{
Background1 = D.ColorSchemeIndexValues.Light1,
Background2 = D.ColorSchemeIndexValues.Light2,
Text1 = D.ColorSchemeIndexValues.Dark1,
Text2 = D.ColorSchemeIndexValues.Dark2,
Accent1 = D.ColorSchemeIndexValues.Accent1,
Accent2 = D.ColorSchemeIndexValues.Accent2,
Accent3 = D.ColorSchemeIndexValues.Accent3,
Accent4 = D.ColorSchemeIndexValues.Accent4,
Accent5 = D.ColorSchemeIndexValues.Accent5,
Accent6 = D.ColorSchemeIndexValues.Accent6,
Hyperlink = D.ColorSchemeIndexValues.Hyperlink,
FollowedHyperlink = D.ColorSchemeIndexValues.FollowedHyperlink,
});
// Add a new ThemePart for the NotesMasterPart
ThemePart themePart = notesMasterPart.ThemePart ?? notesMasterPart.AddNewPart<ThemePart>();
// Add the Theme if it is missing
themePart.Theme ??= new Theme(
new ThemeElements(
new ColorScheme(
new Dark1Color(
new SystemColor() { Val = SystemColorValues.WindowText }),
new Light1Color(
new SystemColor() { Val = SystemColorValues.Window }),
new Dark2Color(
new RgbColorModelHex() { Val = "f1d7be" }),
new Light2Color(
new RgbColorModelHex() { Val = "171717" }),
new Accent1Color(
new RgbColorModelHex() { Val = "ea9f7d" }),
new Accent2Color(
new RgbColorModelHex() { Val = "168ecd" }),
new Accent3Color(
new RgbColorModelHex() { Val = "e694db" }),
new Accent4Color(
new RgbColorModelHex() { Val = "f0612a" }),
new Accent5Color(
new RgbColorModelHex() { Val = "5fd46c" }),
new Accent6Color(
new RgbColorModelHex() { Val = "b158d1" }),
new D.Hyperlink(
new RgbColorModelHex() { Val = "699f82" }),
new FollowedHyperlinkColor(
new RgbColorModelHex() { Val = "699f82" }))
{ Name = "Office2" },
new D.FontScheme(
new MajorFont(
new LatinFont(),
new EastAsianFont(),
new ComplexScriptFont()),
new MinorFont(
new LatinFont(),
new EastAsianFont(),
new ComplexScriptFont()))
{ Name = "Office2" },
new FormatScheme(
new FillStyleList(
new NoFill(),
new SolidFill(),
new D.GradientFill(),
new D.BlipFill(),
new D.PatternFill(),
new GroupFill()),
new LineStyleList(
new D.Outline(),
new D.Outline(),
new D.Outline()),
new EffectStyleList(
new EffectStyle(
new EffectList()),
new EffectStyle(
new EffectList()),
new EffectStyle(
new EffectList())),
new BackgroundFillStyleList(
new NoFill(),
new SolidFill(),
new D.GradientFill(),
new D.BlipFill(),
new D.PatternFill(),
new GroupFill()))
{ Name = "Office2" }),
new ObjectDefaults(),
new ExtraColorSchemeList());
Exemple de code
Voici un exemple de code complet en C# et Visual Basic.
using (PresentationDocument presentationDocument = PresentationDocument.Open(pptxPath, true) ?? throw new Exception("Presentation Document does not exist"))
{
// Get the first slide in the presentation or use the InsertNewSlide.InsertNewSlideIntoPresentation helper method to insert a new slide.
SlidePart slidePart = presentationDocument.PresentationPart?.SlideParts.FirstOrDefault() ?? InsertNewSlideNS.InsertNewSlide(presentationDocument, 1, "my new slide");
// Add a new NoteSlidePart if one does not already exist
NotesSlidePart notesSlidePart = slidePart.NotesSlidePart ?? slidePart.AddNewPart<NotesSlidePart>();
// Add a NoteSlide to the NoteSlidePart if one does not already exist.
notesSlidePart.NotesSlide ??= new P.NotesSlide(
new P.CommonSlideData(
new P.ShapeTree(
new P.NonVisualGroupShapeProperties(
new P.NonVisualDrawingProperties() { Id = 1, Name = "" },
new P.NonVisualGroupShapeDrawingProperties(),
new P.ApplicationNonVisualDrawingProperties()),
new P.GroupShapeProperties(
new D.Transform2D(
new D.Offset() { X = 0, Y = 0 },
new D.Extents() { Cx = 0, Cy = 0 },
new D.ChildOffset() { X = 0, Y = 0 },
new D.ChildExtents() { Cx = 0, Cy = 0 })),
new P.Shape(
new P.NonVisualShapeProperties(
new P.NonVisualDrawingProperties() { Id = 3, Name = "test Placeholder 3" },
new P.NonVisualShapeDrawingProperties(),
new P.ApplicationNonVisualDrawingProperties(
new P.PlaceholderShape() { Type = PlaceholderValues.Body, Index = 1 })),
new P.ShapeProperties(),
new P.TextBody(
new D.BodyProperties(),
new D.Paragraph(
new D.Run(
new D.Text("This is a test note!"))))))));
notesSlidePart.AddPart(slidePart);
// Add the required NotesMasterPart if it is missing
NotesMasterPart notesMasterPart = notesSlidePart.NotesMasterPart ?? notesSlidePart.AddNewPart<NotesMasterPart>();
// Add a NotesMaster to the NotesMasterPart if not present
notesMasterPart.NotesMaster ??= new NotesMaster(
new P.CommonSlideData(
new P.ShapeTree(
new P.NonVisualGroupShapeProperties(
new P.NonVisualDrawingProperties() { Id = 1, Name = "New Placeholder" },
new P.NonVisualGroupShapeDrawingProperties(),
new P.ApplicationNonVisualDrawingProperties()),
new P.GroupShapeProperties())),
new P.ColorMap()
{
Background1 = D.ColorSchemeIndexValues.Light1,
Background2 = D.ColorSchemeIndexValues.Light2,
Text1 = D.ColorSchemeIndexValues.Dark1,
Text2 = D.ColorSchemeIndexValues.Dark2,
Accent1 = D.ColorSchemeIndexValues.Accent1,
Accent2 = D.ColorSchemeIndexValues.Accent2,
Accent3 = D.ColorSchemeIndexValues.Accent3,
Accent4 = D.ColorSchemeIndexValues.Accent4,
Accent5 = D.ColorSchemeIndexValues.Accent5,
Accent6 = D.ColorSchemeIndexValues.Accent6,
Hyperlink = D.ColorSchemeIndexValues.Hyperlink,
FollowedHyperlink = D.ColorSchemeIndexValues.FollowedHyperlink,
});
// Add a new ThemePart for the NotesMasterPart
ThemePart themePart = notesMasterPart.ThemePart ?? notesMasterPart.AddNewPart<ThemePart>();
// Add the Theme if it is missing
themePart.Theme ??= new Theme(
new ThemeElements(
new ColorScheme(
new Dark1Color(
new SystemColor() { Val = SystemColorValues.WindowText }),
new Light1Color(
new SystemColor() { Val = SystemColorValues.Window }),
new Dark2Color(
new RgbColorModelHex() { Val = "f1d7be" }),
new Light2Color(
new RgbColorModelHex() { Val = "171717" }),
new Accent1Color(
new RgbColorModelHex() { Val = "ea9f7d" }),
new Accent2Color(
new RgbColorModelHex() { Val = "168ecd" }),
new Accent3Color(
new RgbColorModelHex() { Val = "e694db" }),
new Accent4Color(
new RgbColorModelHex() { Val = "f0612a" }),
new Accent5Color(
new RgbColorModelHex() { Val = "5fd46c" }),
new Accent6Color(
new RgbColorModelHex() { Val = "b158d1" }),
new D.Hyperlink(
new RgbColorModelHex() { Val = "699f82" }),
new FollowedHyperlinkColor(
new RgbColorModelHex() { Val = "699f82" }))
{ Name = "Office2" },
new D.FontScheme(
new MajorFont(
new LatinFont(),
new EastAsianFont(),
new ComplexScriptFont()),
new MinorFont(
new LatinFont(),
new EastAsianFont(),
new ComplexScriptFont()))
{ Name = "Office2" },
new FormatScheme(
new FillStyleList(
new NoFill(),
new SolidFill(),
new D.GradientFill(),
new D.BlipFill(),
new D.PatternFill(),
new GroupFill()),
new LineStyleList(
new D.Outline(),
new D.Outline(),
new D.Outline()),
new EffectStyleList(
new EffectStyle(
new EffectList()),
new EffectStyle(
new EffectList()),
new EffectStyle(
new EffectList())),
new BackgroundFillStyleList(
new NoFill(),
new SolidFill(),
new D.GradientFill(),
new D.BlipFill(),
new D.PatternFill(),
new GroupFill()))
{ Name = "Office2" }),
new ObjectDefaults(),
new ExtraColorSchemeList());
}
Voir aussi
À propos du Kit de développement logiciel (SDK) Open XML pour Office
Procédure : créer une présentation en fournissant un nom de fichier
Guide pratique pour insérer une nouvelle diapositive dans une présentation
Guide pratique pour supprimer une diapositive d’une présentation