Blocs de construction
Blocs de construction
Ce guide montre comment lire et modifier les blocs de construction de contenu réutilisables stockés dans le document de glossaire d’un document avec Aspose.Words FOSS pour .NET. La bibliothèque expose les entrées AutoText, les pages de garde, les en-têtes, les pieds de page et d’autres contenus prédéfinis similaires via Document.GlossaryDocument et le modèle d’objet BuildingBlock/BuildingBlockCollection.
Le document de glossaire
Chaque Document possède un GlossaryDocument — accessible via Document.GlossaryDocument — qui est lui-même une sous-classe DocumentBase contenant les blocs de construction. Sa propriété BuildingBlocks renvoie un BuildingBlockCollection, avec FirstBuildingBlock/LastBuildingBlock offrant un accès rapide aux extrémités de la liste. Recherchez un bloc de construction spécifique avec GetBuildingBlock(gallery, category, name), en faisant correspondre son BuildingBlockGallery, sa chaîne de catégorie et son nom ensemble.
Structure du bloc de construction
BuildingBlock est un CompositeNode, donc il contient son propre arbre de contenu — Sections (un SectionCollection), FirstSection et LastSection — de la même manière qu’un Document contient des sections. Ses propriétés de métadonnées l’identifient et le classifient: Name, Guid, Description, Category, Gallery (un BuildingBlockGallery — AutoText, CoverPage, Headers, Footers, Tables, Watermarks, et des dizaines d’autres galeries prédéfinies), Type (un BuildingBlockType), et Behavior (un BuildingBlockBehavior de Content, Paragraph ou Page) contrôlant la façon dont son contenu se fusionne dans un document lorsqu’il est inséré.
Gestion de la collection de blocs de construction
BuildingBlockCollection prend en charge la modification complète de la collection: Add(node), Insert(index, node), Remove(node), RemoveAt(index), Clear(), Contains(node) et IndexOf(node), ainsi que ToArray() et GetEnumerator() pour la lecture. Parce que c’est un NodeCollection, les blocs de construction peuvent être créés, clonés et déplacés en utilisant les mêmes API de nœuds que toute autre partie de l’arbre du document.
Blocs de construction de texte d’espace réservé
Les balises de document structuré peuvent référencer un bloc de construction comme contenu d’espace réservé: StructuredDocumentTag.Placeholder et StructuredDocumentTagRangeStart.Placeholder renvoient tous deux le BuildingBlock affiché lorsque la balise est vide, via la propriété partagée IStructuredDocumentTag.Placeholder.
Conseils et meilleures pratiques
- Faites correspondre soigneusement les trois arguments de
GetBuildingBlock(gallery, category, name)— le même nom peut exister dans différentes galeries ou catégories. - Utilisez
BuildingBlockGallerypour filtrer le type de contenu réutilisable que vous recherchez (AutoText,CoverPage,Tables,Watermarks, etc.) plutôt que de parcourir chaque bloc de construction uniquement par son nom. BuildingBlockBehaviordétermine comment le contenu inséré se fusionne avec le document environnant (Content,ParagraphouPage) — vérifiez-le avant de supposer qu’un bloc de construction s’insérera comme vous l’attendez.- Puisque
BuildingBlockest unCompositeNode, traitez-le comme n’importe quel autre sous-arbre de nœud lors de la création ou de la modification de son contenu —AppendChild,InsertAfteret des méthodes de nœud similaires s’appliquent.
Problèmes courants
| Problème | Cause | Correction |
|---|---|---|
GetBuildingBlock() ne renvoie rien | La galerie, la catégorie ou le nom ne correspond pas exactement à un bloc de construction existant | Énumérez GlossaryDocument.BuildingBlocks pour trouver la combinaison exacte Gallery/Category/Name |
| Le contenu du bloc de construction inséré se fusionne de manière inattendue | Behavior (Content/Paragraph/Page) non pris en compte | Vérifiez BuildingBlock.Behavior avant d’insérer pour comprendre comment il sera fusionné |
| L’espace réservé de la balise de document structuré n’affiche pas le contenu attendu | Placeholder pointe vers un BuildingBlock différent de celui supposé | Lisez StructuredDocumentTag.Placeholder pour confirmer quel bloc de construction est réellement référencé |
FAQ
Où les blocs de construction sont-ils stockés dans un document?
Dans le GlossaryDocument du document, accessible via Document.GlossaryDocument, dont la propriété BuildingBlocks est un BuildingBlockCollection.
Comment trouver un bloc de construction spécifique, comme une entrée AutoText?
Appelez GlossaryDocument.GetBuildingBlock(gallery, category, name) avec le BuildingBlockGallery correspondant, la catégorie et le nom.
Puis-je ajouter de nouveaux blocs de construction de façon programmatique?
Oui — BuildingBlockCollection prend en charge Add(node) et Insert(index, node) puisque c’est un NodeCollection.
Que contrôle BuildingBlockBehavior ?
Comment le contenu du bloc de construction se fusionne-t-il dans le document lorsqu’il est inséré — en tant que Content, un Paragraph complet, ou un Page complet.
Comment un bloc de construction est-il lié au texte d’espace réservé d’une balise de document structuré ?
StructuredDocumentTag.Placeholder (et StructuredDocumentTagRangeStart.Placeholder) renvoient le BuildingBlock qui fournit le contenu de l’espace réservé d’un SDT lorsqu’il est vide.
API Reference Résumé
| Classe / Méthode | Description |
|---|---|
Document.GlossaryDocument | Le GlossaryDocument du document, contenant tous les blocs de construction |
GlossaryDocument.BuildingBlocks | BuildingBlockCollection de chaque bloc de construction |
GlossaryDocument.GetBuildingBlock() | Recherche un bloc de construction par galerie, catégorie et nom |
BuildingBlock | Un CompositeNode avec Name, Gallery, Category, Behavior, Type, Sections |
BuildingBlockCollection | Add(), Insert(), Remove(), Clear(), Contains(), IndexOf() |
BuildingBlockGallery / BuildingBlockType / BuildingBlockBehavior | Enums classifiant un bloc de construction |
StructuredDocumentTag.Placeholder | Le BuildingBlock utilisé comme contenu de remplacement d’un SDT |