Gérer les thèmes de présentation en JavaScript
Un thème de présentation définit les propriétés des éléments de conception. Lorsque vous sélectionnez un thème de présentation, vous choisissez essentiellement un ensemble spécifique d’éléments visuels et leurs propriétés.
Dans PowerPoint, un thème comprend des couleurs, polices, styles d’arrière-plan, et des effets.

Modifier la couleur du thème
Un thème PowerPoint utilise un ensemble spécifique de couleurs pour différents éléments d’une diapositive. Si les couleurs ne vous plaisent pas, vous les modifiez en appliquant de nouvelles couleurs au thème. Pour vous permettre de sélectionner une nouvelle couleur de thème, Aspose.Slides fournit des valeurs dans l’énumération SchemeColor.
Ce code JavaScript vous montre comment changer la couleur d’accentuation d’un thème :
var pres = new aspose.slides.Presentation();
try {
var shape = pres.getSlides().get_Item(0).getShapes().addAutoShape(aspose.slides.ShapeType.Rectangle, 10, 10, 100, 100);
shape.getFillFormat().setFillType(java.newByte(aspose.slides.FillType.Solid));
shape.getFillFormat().getSolidFillColor().setSchemeColor(aspose.slides.SchemeColor.Accent4);
} finally {
if (pres != null) {
pres.dispose();
}
}
Vous pouvez déterminer la valeur effective de la couleur résultante de cette manière :
var fillEffective = shape.getFillFormat().getEffective();
var effectiveColor = fillEffective.getSolidFillColor();
console.log(java.callStaticMethodSync("java.lang.String", "format", "Color [A=%d, R=%d, G=%d, B=%d]", effectiveColor.getAlpha(), effectiveColor.getRed(), effectiveColor.getGreen(), effectiveColor.getBlue()));
Pour illustrer davantage l’opération de changement de couleur, nous créons un autre élément et lui assignons la couleur d’accent (provenant de l’opération initiale). Ensuite, nous modifions la couleur dans le thème :
var otherShape = pres.getSlides().get_Item(0).getShapes().addAutoShape(aspose.slides.ShapeType.Rectangle, 10, 120, 100, 100);
otherShape.getFillFormat().setFillType(java.newByte(aspose.slides.FillType.Solid));
otherShape.getFillFormat().getSolidFillColor().setSchemeColor(aspose.slides.SchemeColor.Accent4);
pres.getMasterTheme().getColorScheme().getAccent4().setColor(java.getStaticFieldValue("java.awt.Color", "RED"));
La nouvelle couleur est appliquée automatiquement aux deux éléments.
Définir la couleur du thème à partir de la palette supplémentaire
Lorsque vous appliquez des transformations de luminance à la couleur principale du thème(1), des couleurs provenant de la palette supplémentaire(2) sont formées. Vous pouvez ensuite définir et obtenir ces couleurs de thème.

1 - Couleurs principales du thème
2 - Couleurs de la palette supplémentaire.
Ce code JavaScript montre une opération où les couleurs de la palette supplémentaire sont obtenues à partir de la couleur principale du thème puis utilisées dans des formes :
var presentation = new aspose.slides.Presentation();
try {
var slide = presentation.getSlides().get_Item(0);
// Accent 4
var shape1 = slide.getShapes().addAutoShape(aspose.slides.ShapeType.Rectangle, 10, 10, 50, 50);
shape1.getFillFormat().setFillType(java.newByte(aspose.slides.FillType.Solid));
shape1.getFillFormat().getSolidFillColor().setSchemeColor(aspose.slides.SchemeColor.Accent4);
// Accent 4, plus clair 80%
var shape2 = slide.getShapes().addAutoShape(aspose.slides.ShapeType.Rectangle, 10, 70, 50, 50);
shape2.getFillFormat().setFillType(java.newByte(aspose.slides.FillType.Solid));
shape2.getFillFormat().getSolidFillColor().setSchemeColor(aspose.slides.SchemeColor.Accent4);
shape2.getFillFormat().getSolidFillColor().getColorTransform().add(aspose.slides.ColorTransformOperation.MultiplyLuminance, 0.2);
shape2.getFillFormat().getSolidFillColor().getColorTransform().add(aspose.slides.ColorTransformOperation.AddLuminance, 0.8);
// Accent 4, plus clair 60%
var shape3 = slide.getShapes().addAutoShape(aspose.slides.ShapeType.Rectangle, 10, 130, 50, 50);
shape3.getFillFormat().setFillType(java.newByte(aspose.slides.FillType.Solid));
shape3.getFillFormat().getSolidFillColor().setSchemeColor(aspose.slides.SchemeColor.Accent4);
shape3.getFillFormat().getSolidFillColor().getColorTransform().add(aspose.slides.ColorTransformOperation.MultiplyLuminance, 0.4);
shape3.getFillFormat().getSolidFillColor().getColorTransform().add(aspose.slides.ColorTransformOperation.AddLuminance, 0.6);
// Accent 4, plus clair 40%
var shape4 = slide.getShapes().addAutoShape(aspose.slides.ShapeType.Rectangle, 10, 190, 50, 50);
shape4.getFillFormat().setFillType(java.newByte(aspose.slides.FillType.Solid));
shape4.getFillFormat().getSolidFillColor().setSchemeColor(aspose.slides.SchemeColor.Accent4);
shape4.getFillFormat().getSolidFillColor().getColorTransform().add(aspose.slides.ColorTransformOperation.MultiplyLuminance, 0.6);
shape4.getFillFormat().getSolidFillColor().getColorTransform().add(aspose.slides.ColorTransformOperation.AddLuminance, 0.4);
// Accent 4, plus sombre 25%
var shape5 = slide.getShapes().addAutoShape(aspose.slides.ShapeType.Rectangle, 10, 250, 50, 50);
shape5.getFillFormat().setFillType(java.newByte(aspose.slides.FillType.Solid));
shape5.getFillFormat().getSolidFillColor().setSchemeColor(aspose.slides.SchemeColor.Accent4);
shape5.getFillFormat().getSolidFillColor().getColorTransform().add(aspose.slides.ColorTransformOperation.MultiplyLuminance, 0.75);
// Accent 4, plus sombre 50%
var shape6 = slide.getShapes().addAutoShape(aspose.slides.ShapeType.Rectangle, 10, 310, 50, 50);
shape6.getFillFormat().setFillType(java.newByte(aspose.slides.FillType.Solid));
shape6.getFillFormat().getSolidFillColor().setSchemeColor(aspose.slides.SchemeColor.Accent4);
shape6.getFillFormat().getSolidFillColor().getColorTransform().add(aspose.slides.ColorTransformOperation.MultiplyLuminance, 0.5);
presentation.save(path + "example_accent4.pptx", aspose.slides.SaveFormat.Pptx);
} finally {
if (presentation != null) {
presentation.dispose();
}
}
Mapper SchemeColor aux couleurs ColorScheme
Lorsque vous travaillez avec SchemeColor, vous pouvez remarquer qu’il contient les valeurs de couleur de thème suivantes :
Background1, Background2, Text1 et Text2.
Cependant, Presentation.getMasterTheme().getColorScheme() renvoie ColorScheme, qui expose les couleurs correspondantes comme :
Dark1, Dark2, Light1 et Light2.
Cette différence n’est qu’une question de nommage. Ces valeurs font référence aux mêmes emplacements de couleur de thème et le mappage est fixe :
Text1=Dark1Background1=Light1Text2=Dark2Background2=Light2
Il n’existe aucune conversion dynamique entre Text/Background et Dark/Light. Ce ne sont que des noms alternatifs pour les mêmes couleurs de thème.
Cette différence de nommage provient de la terminologie de Microsoft Office. Les anciennes versions d’Office utilisaient Dark 1, Light 1, Dark 2 et Light 2, tandis que les versions plus récentes de l’interface affichent les mêmes emplacements sous les noms Text 1, Background 1, Text 2 et Background 2.
Modifier la police du thème
Pour vous permettre de sélectionner des polices pour les thèmes et d’autres usages, Aspose.Slides utilise ces identifiants spéciaux (similaires à ceux utilisés dans PowerPoint) :
- +mn-lt - Police du texte principal Latin (Minor Latin Font)
- +mj-lt - Police du titre Latin (Major Latin Font)
- +mn-ea - Police du texte principal Est‑Asiatique (Minor East Asian Font)
- +mj-ea - Police du texte principal Est‑Asiatique (Major East Asian Font)
Ce code JavaScript montre comment assigner la police Latin à un élément du thème :
var shape = pres.getSlides().get_Item(0).getShapes().addAutoShape(aspose.slides.ShapeType.Rectangle, 10, 10, 100, 100);
var paragraph = new aspose.slides.Paragraph();
var portion = new aspose.slides.Portion("Theme text format");
paragraph.getPortions().add(portion);
shape.getTextFrame().getParagraphs().add(paragraph);
portion.getPortionFormat().setLatinFont(new aspose.slides.FontData("+mn-lt"));
Ce code JavaScript montre comment changer la police du thème de la présentation :
pres.getMasterTheme().getFontScheme().getMinor().setLatinFont(new aspose.slides.FontData("Arial"));
La police de toutes les zones de texte sera mise à jour.
TIP
Vous pourriez vouloir consulter les polices PowerPoint.Modifier le style d’arrière-plan du thème
Par défaut, l’application PowerPoint propose 12 arrière-plans prédéfinis, mais seules 3 parmi ces 12 arrière-plans sont enregistrées dans une présentation typique.

Par exemple, après avoir enregistré une présentation dans l’application PowerPoint, vous pouvez exécuter ce code JavaScript pour connaître le nombre d’arrière-plans prédéfinis présents dans la présentation :
var pres = new aspose.slides.Presentation("pres.pptx");
try {
var numberOfBackgroundFills = pres.getMasterTheme().getFormatScheme().getBackgroundFillStyles().size();
console.log("Number of background fill styles for theme is " + numberOfBackgroundFills);
} finally {
if (pres != null) {
pres.dispose();
}
}
Ce code JavaScript montre comment définir l’arrière-plan d’une présentation :
pres.getMasters().get_Item(0).getBackground().setStyleIndex(2);
Guide d’indexation : 0 est utilisé pour aucun remplissage. L’index commence à 1.
TIP
Vous pourriez vouloir consulter le PowerPoint Background.Modifier l’effet du thème
Un thème PowerPoint contient généralement 3 valeurs pour chaque tableau de style. Ces tableaux sont combinés en ces 3 effets : subtil, modéré et intense. Par exemple, voici le résultat lorsque les effets sont appliqués à une forme spécifique :

En utilisant les 3 propriétés (FillStyles, LineStyles, EffectStyles) de la classe FormatScheme, vous pouvez modifier les éléments d’un thème (encore plus facilement que les options de PowerPoint).
Ce code JavaScript montre comment changer un effet de thème en modifiant des parties d’éléments :
var pres = new aspose.slides.Presentation("Subtle_Moderate_Intense.pptx");
try {
pres.getMasterTheme().getFormatScheme().getLineStyles().get_Item(0).getFillFormat().getSolidFillColor().setColor(java.getStaticFieldValue("java.awt.Color", "RED"));
pres.getMasterTheme().getFormatScheme().getFillStyles().get_Item(2).setFillType(java.newByte(aspose.slides.FillType.Solid));
pres.getMasterTheme().getFormatScheme().getFillStyles().get_Item(2).getSolidFillColor().setColor(java.getStaticFieldValue("java.awt.Color", "GREEN"));
pres.getMasterTheme().getFormatScheme().getEffectStyles().get_Item(2).getEffectFormat().getOuterShadowEffect().setDistance(10.0);
pres.save("Design_04_Subtle_Moderate_Intense-out.pptx", aspose.slides.SaveFormat.Pptx);
} finally {
if (pres != null) {
pres.dispose();
}
}
Les changements résultants dans la couleur de remplissage, le type de remplissage, l’effet d’ombre, etc. :

FAQ
Puis-je appliquer un thème à une seule diapositive sans modifier le maître ?
Oui. Aspose.Slides prend en charge les substituts de thème au niveau de la diapositive, vous pouvez donc appliquer un thème local uniquement à cette diapositive tout en conservant le thème maître intact (via le SlideThemeManager).
Quelle est la façon la plus sûre de transférer un thème d’une présentation à une autre ?
Clone slides avec leur maître dans la présentation cible. Cela préserve le maître d’origine, les mises en page et le thème associé afin que l’apparence reste cohérente.
Comment puis‑je voir les valeurs « effective » après tout l’héritage et les remplacements ?
Utilisez les vues « effective » de l’API /slides/fr/nodejs-java/shape-effective-properties/ pour le thème/couleur/police/effet. Elles renvoient les propriétés résolues et finales après l’application du maître ainsi que de tout remplacement local.