Stavební bloky
Stavební bloky
Tento průvodce ukazuje, jak číst a upravovat opakovaně použitelné stavební bloky obsahu uložené v glosáři dokumentu s Aspose.Words FOSS pro .NET. Knihovna zpřístupňuje AutoText položky, obálky, záhlaví, zápatí a podobný předdefinovaný obsah prostřednictvím Document.GlossaryDocument a objektového modelu BuildingBlock/BuildingBlockCollection.
Dokument glosáře
Každý Document obsahuje GlossaryDocument — přístupný přes Document.GlossaryDocument — který je sám podtřídou DocumentBase a obsahuje stavební bloky. Jeho vlastnost BuildingBlocks vrací BuildingBlockCollection, přičemž FirstBuildingBlock/LastBuildingBlock poskytují rychlý přístup k koncům seznamu. Vyhledejte konkrétní stavební blok pomocí GetBuildingBlock(gallery, category, name), který odpovídá jeho BuildingBlockGallery, řetězci kategorie a názvu dohromady.
Struktura stavebního bloku
BuildingBlock je CompositeNode, takže obsahuje vlastní strom obsahu — Sections (a SectionCollection), FirstSection a LastSection — stejným způsobem, jakým Document obsahuje sekce. Jeho metadata vlastnosti jej identifikují a klasifikují: Name, Guid, Description, Category, Gallery (a BuildingBlockGallery — AutoText, CoverPage, Headers, Footers, Tables, Watermarks a desítky dalších předdefinovaných galerií), Type (a BuildingBlockType), a Behavior (a BuildingBlockBehavior z Content, Paragraph nebo Page) řídící, jak se jeho obsah sloučí do dokumentu při vložení.
Správa kolekce stavebních bloků
BuildingBlockCollection podporuje úplnou úpravu kolekce: Add(node), Insert(index, node), Remove(node), RemoveAt(index), Clear(), Contains(node) a IndexOf(node), spolu s ToArray() a GetEnumerator() pro čtení. Protože jde o NodeCollection, lze stavební bloky vytvářet, klonovat a přesouvat pomocí stejných API uzlů jako jakákoli jiná část stromu dokumentu.
Stavební bloky zástupného textu
Strukturované značky dokumentu mohou odkazovat na stavební blok jako svůj zástupný obsah: StructuredDocumentTag.Placeholder a StructuredDocumentTagRangeStart.Placeholder oba vrací BuildingBlock zobrazený, když je značka prázdná, prostřednictvím sdílené vlastnosti IStructuredDocumentTag.Placeholder.
Tipy a osvědčené postupy
- Pečlivě sladěte tři argumenty
GetBuildingBlock(gallery, category, name)— stejný název může existovat v různých galeriích nebo kategoriích. - Použijte
BuildingBlockGalleryk filtrování typu opakovatelného obsahu, který hledáte (AutoText,CoverPage,Tables,Watermarksatd.), místo abyste prohledávali každý stavební blok pouze podle názvu. BuildingBlockBehaviorurčuje, jak se vložený obsah sloučí s okolním dokumentem (Content,ParagraphneboPage) — ověřte to, než předpokládáte, že stavební blok se vloží tak, jak očekáváte.- Protože
BuildingBlockjeCompositeNode, zacházejte s ním jako s jakýmkoli jiným podstromem uzlu při vytváření nebo úpravě jeho obsahu —AppendChild,InsertAftera podobné metody uzlu jsou všechny použitelné.
Časté problémy
| Problém | Příčina | Oprava |
|---|---|---|
GetBuildingBlock() nevrací nic | Galerie, kategorie nebo název neodpovídá přesně existujícímu stavebnímu bloku | Vyjmenujte GlossaryDocument.BuildingBlocks k nalezení přesné kombinace Gallery/Category/Name |
| Vložený obsah stavebního bloku se neočekávaně sloučí | Behavior (Content/Paragraph/Page) není zohledněno | Zkontrolujte BuildingBlock.Behavior před vložením, abyste pochopili, jak se sloučí |
| Zástupný znak strukturované značky dokumentu nezobrazuje očekávaný obsah | Placeholder ukazuje na jiný BuildingBlock, než se předpokládalo | Přečtěte StructuredDocumentTag.Placeholder, abyste potvrdili, který stavební blok je ve skutečnosti odkazován |
FAQ
Kde jsou stavební bloky uloženy v dokumentu?
V GlossaryDocument dokumentu, přístupném přes Document.GlossaryDocument, jehož vlastnost BuildingBlocks je BuildingBlockCollection.
Jak najdu konkrétní stavební blok, například AutoText záznam?
Zavolejte GlossaryDocument.GetBuildingBlock(gallery, category, name) s odpovídajícím BuildingBlockGallery, kategorií a názvem.
Mohu programově přidávat nové stavební bloky?
Ano — BuildingBlockCollection podporuje Add(node) a Insert(index, node), protože je to NodeCollection.
Co BuildingBlockBehavior řídí?
Jak se obsah stavebního bloku sloučí do dokumentu při vložení — jako Content, celý Paragraph nebo celý Page.
Jak je stavební blok spojen s textem zástupce strukturovaného tagu dokumentu?
StructuredDocumentTag.Placeholder (a StructuredDocumentTagRangeStart.Placeholder) vracejí BuildingBlock, který poskytuje obsah zástupce SDT, když je prázdný.
API Reference Shrnutí
| Třída / Metoda | Popis: |
|---|---|
Document.GlossaryDocument | GlossaryDocument dokumentu, který obsahuje všechny stavební bloky |
GlossaryDocument.BuildingBlocks | BuildingBlockCollection každého stavebního bloku |
GlossaryDocument.GetBuildingBlock() | Vyhledá stavební blok podle galerie, kategorie a názvu |
BuildingBlock | Jedna CompositeNode s Name, Gallery, Category, Behavior, Type, Sections |
BuildingBlockCollection | Add(), Insert(), Remove(), Clear(), Contains(), IndexOf() |
BuildingBlockGallery / BuildingBlockType / BuildingBlockBehavior | Enums klasifikující stavební blok |
StructuredDocumentTag.Placeholder | BuildingBlock použitý jako zástupný obsah SDT |