Blocuri de construcție
Blocuri de construcție
Acest ghid arată cum să citești și să modifici blocurile de conținut reutilizabile stocate în documentul de glosar al unui document cu Aspose.Words FOSS pentru .NET. Biblioteca expune intrări AutoText, pagini de copertă, antete, subsoluri și conținut predefinit similar prin Document.GlossaryDocument și modelul de obiecte BuildingBlock/BuildingBlockCollection.
Documentul de glosar
Fiecare Document conține un GlossaryDocument — accesibil prin Document.GlossaryDocument — care este, la rândul său, o subclasă DocumentBase ce deține blocurile de construcție. Proprietatea sa BuildingBlocks returnează un BuildingBlockCollection, cu FirstBuildingBlock/LastBuildingBlock oferind acces rapid la capetele listei. Caută un bloc de construcție specific cu GetBuildingBlock(gallery, category, name), potrivind simultan BuildingBlockGallery, șirul de categorie și numele.
Structura blocului de construcție
BuildingBlock este un CompositeNode, astfel că deține propriul său arbore de conținut — Sections (un SectionCollection), FirstSection și LastSection — în același mod în care un Document deține secțiuni. Proprietățile sale de metadate îl identifică și îl clasifică: Name, Guid, Description, Category, Gallery (un BuildingBlockGallery — AutoText, CoverPage, Headers, Footers, Tables, Watermarks, și zeci de alte galerii predefinite), Type (un BuildingBlockType), și Behavior (un BuildingBlockBehavior de Content, Paragraph sau Page) care controlează modul în care conținutul său se îmbină într-un document la inserare.
Gestionarea colecției de blocuri de construcție
BuildingBlockCollection suportă editarea completă a colecției: Add(node), Insert(index, node), Remove(node), RemoveAt(index), Clear(), Contains(node) și IndexOf(node), împreună cu ToArray() și GetEnumerator() pentru citire. Deoarece este un NodeCollection, blocurile de construcție pot fi create, clonate și mutate utilizând aceleași API-uri de nod ca orice altă parte a arborelui documentului.
Blocuri de construcție Text de substituent
Etichetele de document structurat pot face referire la un bloc de construcție ca conținut de substituent: StructuredDocumentTag.Placeholder și StructuredDocumentTagRangeStart.Placeholder returnează ambele BuildingBlock afișat când eticheta este goală, prin proprietatea comună IStructuredDocumentTag.Placeholder.
Sfaturi și cele mai bune practici
- Potrivește cu atenție cele trei argumente ale lui
GetBuildingBlock(gallery, category, name)— același nume poate exista în galerii sau categorii diferite. - Folosește
BuildingBlockGallerypentru a filtra tipul de conținut reutilizabil pe care îl cauți (AutoText,CoverPage,Tables,Watermarksetc.) în loc să scanezi fiecare bloc de construcție doar după nume. BuildingBlockBehaviordetermină cum se îmbină conținutul inserat cu documentul înconjurător (Content,ParagraphsauPage) — verifică-l înainte de a presupune că un bloc de construcție se va insera în modul așteptat.- Deoarece
BuildingBlockeste unCompositeNode, tratează-l ca pe orice alt subarbore de noduri când construiești sau editezi conținutul său —AppendChild,InsertAfterși metodele de nod similare se aplică.
Probleme comune
| Problemă | Cauză | Remediere |
|---|---|---|
GetBuildingBlock() returnează nimic | Galeria, categoria sau numele nu corespund exact unui bloc de construcție existent | Enumeraţi GlossaryDocument.BuildingBlocks pentru a găsi combinaţia exactă Gallery/Category/Name |
| Conținutul blocului de construcție inserat se îmbină neaşteptat | Behavior (Content/Paragraph/Page) nu este luat în considerare | Verificați BuildingBlock.Behavior înainte de inserare pentru a înțelege cum se va îmbina |
| Marcajul de substituent pentru document structurat nu afișează conținutul așteptat | Placeholder indică un BuildingBlock diferit față de cel presupus | Citiți StructuredDocumentTag.Placeholder pentru a confirma care bloc de construcție este de fapt referențiat |
FAQ
Unde sunt stocate blocurile de construcție într-un document?
În GlossaryDocument documentului, accesibil prin Document.GlossaryDocument, a cărei proprietate BuildingBlocks este un BuildingBlockCollection.
Cum găsesc un bloc de construcție specific, cum ar fi o intrare AutoText?
Apelă GlossaryDocument.GetBuildingBlock(gallery, category, name) cu BuildingBlockGallery corespunzător, categoria și numele.
Pot adăuga noi blocuri de construcție programatic?
Da — BuildingBlockCollection suportă Add(node) și Insert(index, node) deoarece este un NodeCollection.
Ce controlează BuildingBlockBehavior?
Cum se îmbină conținutul blocului de construcție în document atunci când este inserat — ca Content, un întreg Paragraph sau un întreg Page.
Cum este legat un bloc de construcție de textul substituent al unei etichete de document structurat?
StructuredDocumentTag.Placeholder (și StructuredDocumentTagRangeStart.Placeholder) returnează BuildingBlock care furnizează conținutul substituent al unui SDT când este gol.
API Reference Rezumat
| Clasă / Metodă | Descriere: |
|---|---|
Document.GlossaryDocument | GlossaryDocument al documentului, care conține toate blocurile de construcție |
GlossaryDocument.BuildingBlocks | BuildingBlockCollection al fiecărui bloc de construcție |
GlossaryDocument.GetBuildingBlock() | Caută un bloc de construcție după galerie, categorie și nume |
BuildingBlock | Un CompositeNode cu Name, Gallery, Category, Behavior, Type, Sections |
BuildingBlockCollection | Add(), Insert(), Remove(), Clear(), Contains(), IndexOf() |
BuildingBlockGallery / BuildingBlockType / BuildingBlockBehavior | Enumuri care clasifică un bloc de construcție |
StructuredDocumentTag.Placeholder | BuildingBlock utilizat ca conținut placeholder pentru un SDT |