Travailler avec des styles et des thèmes
La classe StyleCollection est utilisée pour gérer les paramètres intégrés et appliquer les paramètres définis par l’utilisateur aux styles.
Accéder aux styles
Vous pouvez obtenir une collection de styles définis dans le document à l’aide de la propriété Document.Styles. Cette collection contient à la fois les styles intégrés et définis par l’utilisateur dans un document. Un style particulier peut être obtenu par son nom/alias, son identifiant de style ou son index. L’exemple de code suivant montre comment accéder à la collection de styles définis dans le document.
Comment extraire du contenu en fonction des styles
À un niveau simple, récupérer le contenu basé sur les styles d’un document Word peut être utile pour identifier, répertorier et compter les paragraphes et les séquences de texte formatés avec un style spécifique. Par exemple, vous devrez peut-être identifier des types particuliers de contenu dans le document, tels que des exemples, des titres, des références, des mots-clés, des noms de figures et des études de cas.
Pour aller plus loin, cela peut également être utilisé pour exploiter la structure du document, définie par les styles qu’il utilise, pour réutiliser le document pour une autre sortie, telle que HTML. C’est en fait ainsi que la documentation Aspose est construite, mettant Aspose.Words à l’épreuve. Un outil construit à l’aide de Aspose.Words prend les documents Word source et les divise en sujets à certains niveaux de titre. Un fichier XML est produit à l’aide de Aspose.Words qui est utilisé pour construire l’arborescence de navigation que vous pouvez voir à gauche. Et puis Aspose.Words convertit chaque sujet en HTML.
La solution pour récupérer du texte formaté avec des styles spécifiques dans un document Word est généralement économique et simple en utilisant Aspose.Words.
La solution
Pour illustrer avec quelle facilité Aspose.Words gère la récupération de contenu en fonction des styles, regardons un exemple. Dans cet exemple, nous allons récupérer du texte formaté avec un style de paragraphe spécifique et un style de caractère à partir d’un exemple de document Word. À un niveau élevé, cela impliquera:# Ouvrir un document Word à l’aide de la classe Document.# Obtenir des collections de tous les paragraphes et toutes les séquences du document.# Sélection uniquement des paragraphes et des séquences requis. Plus précisément, nous récupérerons le texte formaté avec le style de paragraphe “Titre 1” et le style de caractère “Accentuation intense” à partir de cet exemple de document Word.
Dans cet exemple de document, le texte formaté avec le style de paragraphe “Titre 1” est “Insérer une tabulation”, “Styles rapides” et “Thème”, et le texte formaté avec le style de caractère “Accentuation intense” est composé de plusieurs instances de bleu, texte en italique et en gras tel que “galeries” et “aspect général”.
Le code
L’implémentation d’une requête basée sur le style est assez simple dans le modèle objet du document Aspose.Words, car elle utilise simplement des outils déjà en place. Deux méthodes de classe sont implémentées pour cette solution:# ParagraphsByStyleName – Cette méthode récupère un tableau de ces paragraphes dans le document qui a un nom de style spécifique.# RunsByStyleName – Cette méthode récupère un tableau des exécutions dans le document qui ont un nom de style spécifique. Ces deux méthodes sont très similaires, les seules différences étant les types de nœuds et la représentation du style. informations dans le paragraphe et exécuter les nœuds. Voici une implémentation de ParagraphsByStyleName: l’exemple ci-dessous recherche tous les paragraphes formatés avec le style spécifié.
Cette implémentation utilise également la méthode Document.GetChildNodes
de la classe Document
, qui renvoie une collection de tous les nœuds avec le type spécifié, qui dans ce cas dans tous les paragraphes.
Notez que le deuxième paramètre de la méthode Document.GetChildNodes est défini sur true. Cela force la méthode Document.GetChildNodes à effectuer une sélection récursive parmi tous les nœuds enfants, plutôt que de sélectionner uniquement les enfants immédiats.
Il convient également de souligner que la collection paragraphes ne crée pas de surcharge immédiate car les paragraphes sont chargés dans cette collection uniquement lorsque vous accédez à des éléments qu’ils contiennent. Ensuite, tout ce que vous avez à faire est de parcourir la collection, en utilisant l’opérateur foreach standard et d’ajouter des paragraphes ayant le style spécifié au tableau paragraphesWithStyle. Le nom du style Paragraph
se trouve dans la propriété Style.Name de l’objet Paragraph.ParagraphFormat. L’implémentation de RunsByStyleName est presque la même, même si nous utilisons évidemment NodeType.Run pour récupérer les nœuds d’exécution. La propriété Font.Style d’un objet Run est utilisée pour accéder aux informations de style dans les nœuds Run. L’exemple ci-dessous recherche toutes les exécutions formatées avec le style spécifié.
Lorsque les deux requêtes sont implémentées, tout ce que vous avez à faire est de transmettre un objet document et de spécifier les noms de style du contenu que vous souhaitez récupérer: L’exemple ci-dessous exécute des requêtes et affiche les résultats. Vous pouvez télécharger le fichier modèle de cet exemple depuis ici.
Résultat final
Lorsque tout est terminé, l’exécution de l’exemple affichera le résultat suivant:
Comme vous pouvez le voir, il s’agit d’un exemple très simple, montrant le numéro et le texte des paragraphes collectés et exécutés dans l’exemple de document Word.
Copier tous les styles du modèle
Il existe des cas où vous souhaitez copier tous les styles d’un document dans un autre. Vous pouvez utiliser la méthode Document.CopyStylesFromTemplate
pour copier les styles du modèle spécifié vers un document. Lorsque les styles sont copiés d’un modèle vers un document, les styles portant le même nom dans le document sont redéfinis pour correspondre aux descriptions de style dans le modèle. Les styles uniques du modèle sont copiés dans le document. Les styles uniques du document restent intacts. L’exemple Below code montre comment copier des styles d’un document dans un autre.
Comment manipuler les propriétés du thème
Nous avons ajouté API de base dans Aspose.Words pour accéder aux propriétés du thème du document. Pour l’instant, ce API inclut les objets publics suivants:
- Thème
- Polices de thème
- ThèmeCouleurs
Voici comment obtenir les propriétés du thème:
Et voici comment définir les propriétés du thème: