Bausteine
Bausteine
Dieser Leitfaden zeigt, wie man die wiederverwendbaren Inhaltsbausteine, die im Glossar-Dokument eines Dokuments mit Aspose.Words FOSS für .NET gespeichert sind, liest und ändert. Die Bibliothek stellt AutoText Einträge, Deckblätter, Kopf- und Fußzeilen sowie ähnliche vordefinierte Inhalte über Document.GlossaryDocument und das BuildingBlock/BuildingBlockCollection-Objektmodell bereit.
Das Glossar-Dokument
Jedes Document enthält ein GlossaryDocument — erreichbar über Document.GlossaryDocument — das selbst eine Unterklasse von DocumentBase ist und die Bausteine hält. Seine BuildingBlocks-Eigenschaft gibt ein BuildingBlockCollection zurück, wobei FirstBuildingBlock/LastBuildingBlock schnellen Zugriff auf die Enden der Liste ermöglichen. Nach einem bestimmten Baustein kann man mit GetBuildingBlock(gallery, category, name) suchen, wobei es gleichzeitig mit seinem BuildingBlockGallery, dem Kategorien-String und dem Namen übereinstimmt.
Struktur des Bausteins
BuildingBlock ist ein CompositeNode, daher enthält es seinen eigenen Inhaltsbaum — Sections (ein SectionCollection), FirstSection und LastSection — auf die gleiche Weise, wie ein Document Abschnitte enthält. Seine Metadaten-Eigenschaften identifizieren und klassifizieren es: Name, Guid, Description, Category, Gallery (ein BuildingBlockGallery — AutoText, CoverPage, Headers, Footers, Tables, Watermarks und dutzende weiterer vordefinierter Galerien), Type (ein BuildingBlockType), und Behavior (ein BuildingBlockBehavior von Content, Paragraph oder Page), die steuern, wie seine Inhalte beim Einfügen in ein Dokument zusammengeführt werden.
Verwalten der Bausteinsammlung
BuildingBlockCollection unterstützt die vollständige Bearbeitung von Sammlungen: Add(node), Insert(index, node), Remove(node), RemoveAt(index), Clear(), Contains(node) und IndexOf(node), zusammen mit ToArray() und GetEnumerator() zum Lesen. Da es ein NodeCollection ist, können Bausteine konstruiert, geklont und verschoben werden, wobei dieselben Node-APIs wie in jedem anderen Teil des Dokumentbaums verwendet werden.
Platzhalter-Text-Bausteine
Strukturierte Dokument-Tags können einen Baustein als Platzhalterinhalt referenzieren: StructuredDocumentTag.Placeholder und StructuredDocumentTagRangeStart.Placeholder geben beide das BuildingBlock zurück, das angezeigt wird, wenn das Tag leer ist, über die gemeinsame IStructuredDocumentTag.Placeholder-Eigenschaft.
Tipps und bewährte Verfahren
- Vergleichen Sie die drei Argumente von
GetBuildingBlock(gallery, category, name)sorgfältig — derselbe Name kann in verschiedenen Galerien oder Kategorien existieren. - Verwenden Sie
BuildingBlockGallery, um zu filtern, welche Art von wiederverwendbarem Inhalt Sie suchen (AutoText,CoverPage,Tables,Watermarksusw.), anstatt jeden Baustein nur nach Namen zu durchsuchen. BuildingBlockBehaviorbestimmt, wie eingefügter Inhalt mit dem umgebenden Dokument zusammengeführt wird (Content,ParagraphoderPage) — prüfen Sie dies, bevor Sie davon ausgehen, dass ein Baustein wie erwartet eingefügt wird.- Da
BuildingBlockeinCompositeNodeist, behandeln Sie es beim Erstellen oder Bearbeiten seiner Inhalte wie jeden anderen Node-Teilbaum —AppendChild,InsertAfterund ähnliche Node-Methoden gelten alle.
Häufige Probleme
| Problem | Ursache | Lösung |
|---|---|---|
GetBuildingBlock() liefert nichts | Galerie, Kategorie oder Name stimmt nicht exakt mit einem vorhandenen Baustein überein | Enumeriere GlossaryDocument.BuildingBlocks, um die genaue Gallery/Category/Name-Kombination zu finden |
| Eingefügter Bausteininhalt wird unerwartet zusammengeführt | Behavior (Content/Paragraph/Page) nicht berücksichtigt | Überprüfen Sie BuildingBlock.Behavior vor dem Einfügen, um zu verstehen, wie es zusammengeführt wird |
| Der Platzhalter für das strukturierte Dokument-Tag zeigt nicht den erwarteten Inhalt | Placeholder verweist auf ein anderes BuildingBlock als angenommen | Lesen Sie StructuredDocumentTag.Placeholder, um zu bestätigen, welcher Baustein tatsächlich referenziert wird |
FAQ
Wo werden Bausteine in einem Dokument gespeichert?
Im GlossaryDocument des Dokuments, zugänglich über Document.GlossaryDocument, dessen BuildingBlocks-Eigenschaft ein BuildingBlockCollection ist.
Wie finde ich einen bestimmten Baustein, zum Beispiel einen AutoText-Eintrag?
Rufe GlossaryDocument.GetBuildingBlock(gallery, category, name) mit dem passenden BuildingBlockGallery, der Kategorie und dem Namen auf.
Kann ich neue Bausteine programmgesteuert hinzufügen?
Ja — BuildingBlockCollection unterstützt Add(node) und Insert(index, node), da es ein NodeCollection ist.
Was steuert BuildingBlockBehavior?
Wie der Inhalt des Bausteins beim Einfügen in das Dokument zusammengeführt wird — als Content, ein ganzes Paragraph oder ein ganzes Page.
Wie ist ein Baustein mit dem Platzhaltertext eines strukturierten Dokument-Tags verknüpft?
StructuredDocumentTag.Placeholder (und StructuredDocumentTagRangeStart.Placeholder) geben das BuildingBlock zurück, das den Platzhalterinhalt eines SDT liefert, wenn dieser leer ist.
API Reference Zusammenfassung
| Klasse / Methode | Beschreibung |
|---|---|
Document.GlossaryDocument | Das GlossaryDocument des Dokuments, das alle Bausteine enthält |
GlossaryDocument.BuildingBlocks | BuildingBlockCollection von jedem Baustein |
GlossaryDocument.GetBuildingBlock() | Sucht einen Baustein nach Galerie, Kategorie und Name |
BuildingBlock | Ein CompositeNode mit Name, Gallery, Category, Behavior, Type, Sections |
BuildingBlockCollection | Add(), Insert(), Remove(), Clear(), Contains(), IndexOf() |
BuildingBlockGallery / BuildingBlockType / BuildingBlockBehavior | Enums zur Klassifizierung eines Bausteins |
StructuredDocumentTag.Placeholder | Der BuildingBlock wird als Platzhalterinhalt eines SDT verwendet |