Blocchi di costruzione
Blocchi di Costruzione
Questa guida mostra come leggere e modificare i blocchi di contenuto riutilizzabili memorizzati nel documento di glossario di un documento con Aspose.Words FOSS per .NET. La libreria espone AutoText voci, pagine di copertina, intestazioni, piè di pagina e contenuti predefiniti simili tramite Document.GlossaryDocument e il modello oggetto BuildingBlock/BuildingBlockCollection.
Il documento di glossario
Ogni Document contiene un GlossaryDocument — accessibile tramite Document.GlossaryDocument — che è a sua volta una sottoclasse DocumentBase che contiene i blocchi di costruzione. La sua proprietà BuildingBlocks restituisce un BuildingBlockCollection, con FirstBuildingBlock/LastBuildingBlock che forniscono un accesso rapido alle estremità dell’elenco. Cerca un blocco di costruzione specifico con GetBuildingBlock(gallery, category, name), facendo corrispondere il suo BuildingBlockGallery, la stringa di categoria e il nome insieme.
Struttura del Blocco di Costruzione
BuildingBlock è un CompositeNode, quindi contiene il proprio albero dei contenuti — Sections (un SectionCollection), FirstSection e LastSection — allo stesso modo in cui un Document contiene sezioni. Le sue proprietà dei metadati lo identificano e lo classificano: Name, Guid, Description, Category, Gallery (un BuildingBlockGallery — AutoText, CoverPage, Headers, Footers, Tables, Watermarks, e dozzine di altre gallerie predefinite), Type (un BuildingBlockType), e Behavior (un BuildingBlockBehavior di Content, Paragraph o Page) che controllano come i suoi contenuti si fondono in un documento quando inseriti.
Gestire la Collezione di Blocchi di Costruzione
BuildingBlockCollection supporta la modifica completa della collezione: Add(node), Insert(index, node), Remove(node), RemoveAt(index), Clear(), Contains(node) e IndexOf(node), insieme a ToArray() e GetEnumerator() per la lettura. Poiché è un NodeCollection, i blocchi costruttivi possono essere creati, clonati e spostati usando le stesse API dei nodi di qualsiasi altra parte dell’albero del documento.
Blocchi di Testo Segnaposto
I tag di documento strutturato possono fare riferimento a un blocco costruttivo come contenuto segnaposto: StructuredDocumentTag.Placeholder e StructuredDocumentTagRangeStart.Placeholder restituiscono entrambi il BuildingBlock mostrato quando il tag è vuoto, tramite la proprietà condivisa IStructuredDocumentTag.Placeholder.
Suggerimenti e Migliori Pratiche
- Abbina attentamente i tre argomenti di
GetBuildingBlock(gallery, category, name)— lo stesso nome può esistere in diverse gallerie o categorie. - Usa
BuildingBlockGalleryper filtrare il tipo di contenuto riutilizzabile che stai cercando (AutoText,CoverPage,Tables,Watermarks, ecc.) invece di scansionare ogni blocco costruttivo solo per nome. BuildingBlockBehaviordetermina come il contenuto inserito si fonde con il documento circostante (Content,ParagraphoPage) — controllalo prima di presumere che un blocco costruttivo venga inserito come ti aspetti.- Poiché
BuildingBlockè unCompositeNode, trattalo come qualsiasi altro sottoalbero di nodi durante la creazione o la modifica dei suoi contenuti —AppendChild,InsertAftere metodi di nodo simili si applicano tutti.
Problemi comuni
| Problema | Causa | Correzione |
|---|---|---|
GetBuildingBlock() non restituisce nulla | Galleria, categoria o nome non corrispondono esattamente a un building block esistente | Elencare GlossaryDocument.BuildingBlocks per trovare la combinazione esatta Gallery/Category/Name |
| Il contenuto del building block inserito si fonde in modo inatteso | Behavior (Content/Paragraph/Page) non previsto | Controlla BuildingBlock.Behavior prima di inserire per capire come verrà unito |
| Il segnaposto del tag del documento strutturato non mostra il contenuto previsto | Placeholder punta a un BuildingBlock diverso da quello presunto | Leggi StructuredDocumentTag.Placeholder per confermare quale blocco costruttivo è effettivamente referenziato |
FAQ
Dove sono archiviati i blocchi di costruzione in un documento?
Nel GlossaryDocument del documento, accessibile tramite Document.GlossaryDocument, la cui proprietà BuildingBlocks è un BuildingBlockCollection.
Come trovo un blocco di costruzione specifico, ad esempio una voce AutoText?
Chiama GlossaryDocument.GetBuildingBlock(gallery, category, name) con il BuildingBlockGallery corrispondente, la categoria e il nome.
Posso aggiungere nuovi blocchi di costruzione in modo programmatico?
Sì — BuildingBlockCollection supporta Add(node) e Insert(index, node) poiché è un NodeCollection.
Cosa controlla BuildingBlockBehavior?
Come si fonde il contenuto del blocco di costruzione nel documento quando viene inserito — come Content, un intero Paragraph o un intero Page.
Come è correlato un blocco di costruzione al testo segnaposto di un tag di documento strutturato?
StructuredDocumentTag.Placeholder (e StructuredDocumentTagRangeStart.Placeholder) restituiscono il BuildingBlock che fornisce il contenuto segnaposto di un SDT quando è vuoto.
Riepilogo API Reference
| Classe / Metodo | Descrizione |
|---|---|
Document.GlossaryDocument | Il GlossaryDocument del documento, che contiene tutti i blocchi costruttivi |
GlossaryDocument.BuildingBlocks | BuildingBlockCollection di ogni blocco costruttivo |
GlossaryDocument.GetBuildingBlock() | Cerca un blocco costruttivo per galleria, categoria e nome |
BuildingBlock | Un CompositeNode con Name, Gallery, Category, Behavior, Type, Sections |
BuildingBlockCollection | Add(), Insert(), Remove(), Clear(), Contains(), IndexOf() |
BuildingBlockGallery / BuildingBlockType / BuildingBlockBehavior | Enum che classificano un blocco di costruzione |
StructuredDocumentTag.Placeholder | Il BuildingBlock usato come contenuto segnaposto di un SDT |