بلوکهای ساختمانی
بلوکهای ساختمانی
این راهنما نشان میدهد چگونه بلوکهای ساختمانی محتوای قابل استفاده مجدد که در سند واژهنامهٔ یک سند ذخیره شدهاند، با Aspose.Words FOSS برای .NET خوانده و اصلاح شوند. کتابخانه AutoText ورودیها، صفحات جلد، سرصفحهها، پاصفحهها و محتوای پیشتعریفشدهٔ مشابه را از طریق Document.GlossaryDocument و مدل شیء BuildingBlock/BuildingBlockCollection در دسترس میگذارد.
سند واژهنامه
هر Document یک GlossaryDocument دارد — که از طریق Document.GlossaryDocument قابل دسترسی است — که خود یک زیرکلاس DocumentBase است و بلوکهای ساختمانی را نگه میدارد. ویژگی BuildingBlocks آن یک BuildingBlockCollection برمیگرداند، که با FirstBuildingBlock/LastBuildingBlock دسترسی سریع به انتهای فهرست را فراهم میکند. یک بلوک ساختمانی خاص را با GetBuildingBlock(gallery, category, name) جستجو کنید، بهطوری که BuildingBlockGallery، رشتهٔ دستهبندی و نام آن را همزمان مطابقت دهد.
ساختار بلوک ساختمانی
BuildingBlock یک CompositeNode است، بنابراین درخت محتوای خود را دارد — Sections (یک SectionCollection)، FirstSection و LastSection — همانطور که یک Document بخشها را نگه میدارد. ویژگیهای فرادادهای آن را شناسایی و طبقهبندی میکنند: Name، Guid، Description، Category، Gallery (یک BuildingBlockGallery — AutoText، CoverPage، Headers، Footers، Tables، Watermarks، و دهها گالری پیشتعریفشدهٔ دیگر)، Type (یک BuildingBlockType)، و Behavior (یک BuildingBlockBehavior از Content، Paragraph یا Page) که نحوهٔ ادغام محتویات آن در یک سند هنگام وارد شدن را کنترل میکند.
مدیریت مجموعه بلوکهای ساختمانی
BuildingBlockCollection از ویرایش کامل مجموعه پشتیبانی میکند: Add(node)، Insert(index, node)، Remove(node)، RemoveAt(index)، Clear()، Contains(node) و IndexOf(node)، بههمراه ToArray() و GetEnumerator() برای خواندن. چون یک NodeCollection است، بلوکهای ساختاری میتوانند ساخته، کلون و جابهجا شوند با استفاده از همان APIهای گره همانند هر بخش دیگری از درخت سند.
بلوکهای ساختاری متن جایگزین
برچسبهای سند ساختاری میتوانند یک بلوک ساختاری را به عنوان محتوای جایگزین خود ارجاع دهند: StructuredDocumentTag.Placeholder و StructuredDocumentTagRangeStart.Placeholder هر دو BuildingBlock نشان دادهشده را هنگامی که برچسب خالی باشد، از طریق ویژگی مشترک IStructuredDocumentTag.Placeholder برمیگردانند.
نکات و بهترین روشها
- سه آرگومان
GetBuildingBlock(gallery, category, name)را با دقت تطبیق دهید — همان نام میتواند در گالریها یا دستهبندیهای مختلف وجود داشته باشد. - از
BuildingBlockGalleryبرای فیلتر کردن نوع محتوای قابل استفاده مجددی که به دنبال آن هستید (AutoText،CoverPage،Tables،Watermarksو غیره) استفاده کنید، بهجای اسکن کردن تمام بلوکهای ساختاری فقط بر اساس نام. BuildingBlockBehaviorتعیین میکند که محتویات وارد شده چگونه با سند اطراف ترکیب شوند (Content،ParagraphیاPage) — قبل از این که فرض کنید یک بلوک ساختاری بهصورت مورد انتظار درج میشود، آن را بررسی کنید.- از آنجا که
BuildingBlockیکCompositeNodeاست، آن را مانند هر زیرشاخه گره دیگری هنگام ساخت یا ویرایش محتویاتش رفتار کنید —AppendChild،InsertAfterو روشهای مشابه گره همه اعمال میشوند.
مسائل رایج
| مشکل | دلیل | رفع |
|---|---|---|
GetBuildingBlock() هیچ مقداری برنمیگرداند | گالری، دسته یا نام دقیقاً با یک بلوک ساختمانی موجود مطابقت ندارد | فهرست GlossaryDocument.BuildingBlocks برای یافتن ترکیب دقیق Gallery/Category/Name |
| محتویات بلوک ساختمانی درجشده بهطور غیرمنتظرهای ادغام میشود | Behavior (Content/Paragraph/Page) در نظر گرفته نشده است | قبل از درج، BuildingBlock.Behavior را بررسی کنید تا بفهمید چگونه ادغام میشود |
| پلیسهولدر برچسب سند ساختاری محتوای مورد انتظار را نشان نمیدهد | Placeholder به یک BuildingBlock متفاوت نسبت به فرض قبلی اشاره میکند | برای تأیید اینکه کدام بلوک ساختمانی واقعاً مرجع است، StructuredDocumentTag.Placeholder را بخوانید |
FAQ
بلوکهای سازنده در یک سند کجا ذخیره میشوند؟
در GlossaryDocument سند، که از طریق Document.GlossaryDocument قابل دسترسی است و ویژگی BuildingBlocks آن یک BuildingBlockCollection است.
چگونه یک بلوک سازنده خاص را پیدا کنم، مثلاً یک ورودی AutoText؟
متد GlossaryDocument.GetBuildingBlock(gallery, category, name) را با BuildingBlockGallery منطبق، دسته و نام فراخوانی کنید.
آیا میتوانم بلوکهای سازنده جدید را برنامهنویسی کنم؟
بله — BuildingBlockCollection از Add(node) و Insert(index, node) پشتیبانی میکند چون یک NodeCollection است.
BuildingBlockBehavior چه چیزی را کنترل میکند؟
چگونه محتوای بلوک ساختمانی هنگام درج به سند ترکیب میشود — به عنوان Content، یک Paragraph کامل، یا یک Page کامل.
بلوک ساختمانی چگونه با متن جایگزین برچسب سند ساختاری مرتبط است؟
StructuredDocumentTag.Placeholder (و StructuredDocumentTagRangeStart.Placeholder) مقدار BuildingBlock را برمیگردانند که محتوای جایگزین یک SDT را هنگام خالی بودن فراهم میکند.
خلاصه API Reference
| کلاس / متد | توضیح |
|---|---|
Document.GlossaryDocument | GlossaryDocument سند، که تمام بلوکهای ساختمانی را در خود دارد |
GlossaryDocument.BuildingBlocks | BuildingBlockCollection هر بلوک ساختمانی |
GlossaryDocument.GetBuildingBlock() | بلوک ساختمانی را بر اساس گالری، دستهبندی و نام جستجو میکند |
BuildingBlock | یک CompositeNode با Name، Gallery، Category، Behavior، Type، Sections |
BuildingBlockCollection | Add(), Insert(), Remove(), Clear(), Contains(), IndexOf() |
BuildingBlockGallery / BuildingBlockType / BuildingBlockBehavior | Enums که یک بلوک سازنده را طبقهبندی میکنند |
StructuredDocumentTag.Placeholder | BuildingBlock که به عنوان محتوای جایدار SDT استفاده میشود |