Elementy budulcowe
Bloki budujące
Ten przewodnik pokazuje, jak odczytywać i modyfikować wielokrotnego użytku bloki budujące treści przechowywane w dokumencie słownika przy użyciu Aspose.Words FOSS dla .NET. Biblioteka udostępnia AutoText wpisy, strony tytułowe, nagłówki, stopki i podobne predefiniowane treści poprzez Document.GlossaryDocument oraz model obiektowy BuildingBlock/BuildingBlockCollection.
Dokument słownika
Każdy Document zawiera GlossaryDocument — dostępny poprzez Document.GlossaryDocument — który jest jednocześnie podklasą DocumentBase przechowującą bloki budujące. Jego właściwość BuildingBlocks zwraca BuildingBlockCollection, przy czym FirstBuildingBlock/LastBuildingBlock zapewniają szybki dostęp do końców listy. Wyszukaj konkretny blok budujący przy użyciu GetBuildingBlock(gallery, category, name), dopasowując jednocześnie jego BuildingBlockGallery, ciąg kategorii i nazwę.
Struktura bloku budującego
BuildingBlock jest CompositeNode, więc posiada własne drzewo treści — Sections (a SectionCollection), FirstSection oraz LastSection — tak jak Document zawiera sekcje. Jego właściwości metadanych identyfikują i klasyfikują go: Name, Guid, Description, Category, Gallery (a BuildingBlockGallery — AutoText, CoverPage, Headers, Footers, Tables, Watermarks i dziesiątki innych predefiniowanych galerii), Type (a BuildingBlockType), oraz Behavior (a BuildingBlockBehavior Content, Paragraph lub Page) kontrolująca, w jaki sposób jej zawartość jest scalana z dokumentem po wstawieniu.
Zarządzanie kolekcją bloków budujących
BuildingBlockCollection obsługuje pełną edycję kolekcji: Add(node), Insert(index, node), Remove(node), RemoveAt(index), Clear(), Contains(node) i IndexOf(node), wraz z ToArray() i GetEnumerator() do odczytu. Ponieważ jest to NodeCollection, bloki budulcowe mogą być tworzone, klonowane i przenoszone przy użyciu tych samych interfejsów API węzłów co każda inna część drzewa dokumentu.
Bloki Budulcowe Tekstu Zastępczego
Strukturalne znaczniki dokumentu mogą odwoływać się do bloku budulcowego jako ich treści zastępczej: StructuredDocumentTag.Placeholder i StructuredDocumentTagRangeStart.Placeholder zwracają oba BuildingBlock wyświetlane, gdy znacznik jest pusty, za pośrednictwem wspólnej własności IStructuredDocumentTag.Placeholder.
Wskazówki i Najlepsze Praktyki
- Dopasuj trzy argumenty
GetBuildingBlock(gallery, category, name)starannie — ta sama nazwa może występować w różnych galeriach lub kategoriach. - Użyj
BuildingBlockGallery, aby filtrować, jakiego rodzaju treści wielokrotnego użytku szukasz (AutoText,CoverPage,Tables,Watermarksitp.), zamiast przeszukiwać każdy blok budulcowy wyłącznie po nazwie. BuildingBlockBehaviorokreśla, jak wstawiona treść łączy się z otaczającym dokumentem (Content,ParagraphlubPage) — sprawdź to, zanim założysz, że blok budulcowy wstawi się w oczekiwany sposób.- Ponieważ
BuildingBlockjestCompositeNode, traktuj go jak dowolny inny poddrzewo węzła podczas budowania lub edytowania jego zawartości —AppendChild,InsertAfteri podobne metody węzła mają zastosowanie.
Typowe problemy
| Problem | Przyczyna | Rozwiązanie |
|---|---|---|
GetBuildingBlock() nie zwraca nic | Galeria, kategoria lub nazwa nie pasują dokładnie do istniejącego bloku konstrukcyjnego | Wylicz GlossaryDocument.BuildingBlocks, aby znaleźć dokładną kombinację Gallery/Category/Name |
| Wstawiona zawartość bloku konstrukcyjnego łączy się nieoczekiwanie | Behavior (Content/Paragraph/Page) nie został uwzględniony | Sprawdź BuildingBlock.Behavior przed wstawieniem, aby zrozumieć, jak zostanie scalony |
| Placeholder znacznika strukturalnego dokumentu nie wyświetla oczekiwanej treści | Placeholder wskazuje na inny BuildingBlock niż zakładano | Przeczytaj StructuredDocumentTag.Placeholder, aby potwierdzić, który blok budulcowy jest faktycznie odwoływany |
FAQ
Gdzie w dokumencie są przechowywane bloki konstrukcyjne?
W GlossaryDocument dokumentu, dostępnym przez Document.GlossaryDocument, którego właściwość BuildingBlocks jest BuildingBlockCollection.
Jak znaleźć określony blok konstrukcyjny, taki jak wpis AutoText?
Wywołaj GlossaryDocument.GetBuildingBlock(gallery, category, name) z pasującym BuildingBlockGallery, kategorią i nazwą.
Czy mogę dodawać nowe bloki konstrukcyjne programowo?
Tak — BuildingBlockCollection obsługuje Add(node) i Insert(index, node), ponieważ jest NodeCollection.
Co kontroluje BuildingBlockBehavior?
Jak zawartość bloku konstrukcyjnego łączy się z dokumentem po wstawieniu — jako Content, cały Paragraph lub cały Page.
Jak blok konstrukcyjny jest związany z tekstem zastępczym znacznika strukturalnego dokumentu?
StructuredDocumentTag.Placeholder (i StructuredDocumentTagRangeStart.Placeholder) zwracają BuildingBlock, które dostarcza zawartość zastępczą SDT, gdy jest pusta.
API Reference Podsumowanie
| Klasa / Metoda | Opis |
|---|---|
Document.GlossaryDocument | GlossaryDocument dokumentu, zawierający wszystkie bloki budulcowe |
GlossaryDocument.BuildingBlocks | BuildingBlockCollection każdego bloku konstrukcyjnego |
GlossaryDocument.GetBuildingBlock() | Wyszukuje blok konstrukcyjny według galerii, kategorii i nazwy |
BuildingBlock | A CompositeNode z Name, Gallery, Category, Behavior, Type, Sections |
BuildingBlockCollection | Add(), Insert(), Remove(), Clear(), Contains(), IndexOf() |
BuildingBlockGallery / BuildingBlockType / BuildingBlockBehavior | Enums klasyfikujące element budulcowy |
StructuredDocumentTag.Placeholder | Ten BuildingBlock używany jako zawartość zastępcza SDT |