کار با سبک‌ها

کار با سبک‌ها

این راهنما نشان می‌دهد چگونه با سبک‌های پاراگراف، کاراکتر، جدول و فهرست در کار کنیم Aspose.Words FOSS برای .NET — جستجو و اعمال سبک‌های پیش‌فرض و سفارشی، و پیکربندی قالب‌بندی شرطی برای هر منطقه روی سبک‌های جدول.

یک شیء Style نمایانگر یک سبک پیش‌ساخته یا تعریف‌شده توسط کاربر است — مجموعه‌ای نام‌گذاری‌شده از قالب‌بندی پاراگراف، قلم و فهرست که Word هنگام اختصاص آن سبک به یک پاراگراف یا اجرا اعمال می‌کند. هر سند سبک‌های خود را از طریق ویژگی Document.Styles منتشر می‌کند که یک StyleCollection را برمی‌گرداند. سبک‌های جدول توسط TableStyle نمایانده می‌شوند، یک زیرکلاس از Style که قالب‌بندی خاص جدول و قالب‌بندی شرطی منطقه‌ای را از طریق ConditionalStyleCollection اضافه می‌کند.


انواع سبک‌ها و شناسایی

هر Style دارای ویژگی Type از نوع StyleType است که یکی از Paragraph، Character، Table یا List می‌باشد — مطابق با چهار نوع سبکی که Word پشتیبانی می‌کند. سبک‌های پیش‌ساخته همچنین مقدار enum StyleIdentifier مستقل از locale را حمل می‌کنند (به عنوان مثال مقادیری که به سبک‌های عنوان، تأکید و پیوندهای ابرمتن مربوط می‌شوند) تا کد بتواند یک سبک پیش‌ساخته را بدون وابستگی به نام نمایشی آن در زبان خاصی جستجو کند. نام قابل خواندن برای انسان یک سبک از طریق Style.Name در دسترس است، و Style.Aliases هر نام جایگزینی که Word برای همان سبک تشخیص می‌دهد را برمی‌گرداند. Style.BuiltIn گزارش می‌دهد که آیا سبک همراه با خود Word توزیع می‌شود یا در سند تعریف شده است، و Style.IsHeading گزارش می‌دهد که آیا سبک یکی از سبک‌های پیش‌ساخته عنوان است.

دسترس‌پذیری و مدیریت مجموعه سبک‌ها

StyleCollection مجموعه‌ای از تمام اشیاء Style — پیش‌ساخته و سفارشی — است که به یک سند پیوست شده‌اند و از طریق Document.Styles قابل دسترسی است. یک سبک را با نام نمایشی آن با استفاده از ایندکس‌گر StyleCollection — styles[name] — بازیابی کنید یا یک سبک پیش‌ساخته را با مقدار StyleIdentifier مستقل از locale آن با همان ایندکس‌گر — styles[sti] — بازیابی کنید که نسبت به جستجوی نام در اسنادی که به زبان‌های مختلف نوشته شده‌اند، قابل اطمینان‌تر است. سبک‌های جدید با StyleCollection.Add(type, name) ساخته می‌شوند، به‌طوری که StyleType و یک نام را مشخص می‌کند، و یک سبک موجود می‌تواند با StyleCollection.AddCopy(style) در مجموعه تکثیر شود. StyleCollection.Count گزارش می‌دهد که سند چند سبک دارد، و مجموعه همچنین DefaultFont و DefaultParagraphFormat را ارائه می‌دهد که قالب‌بندی پیش‌فرض سراسری سند را توصیف می‌کند که محتوای جدید قبل از اعمال هر سبک صریحی، از آن ارث می‌برد. StyleCollection.ClearQuickStyleGallery() تمام سبک‌ها را از گالری سریع-استایل رابط کاربری Word حذف می‌کند بدون اینکه خود سبک‌ها حذف شوند.

اعمال سبک‌ها بر روی پاراگراف‌ها و ران‌ها

اشیایی که می‌توانند یک سبک را حمل کنند، هر دو ویژگی Style (خود شیء Style) و ویژگی StyleName (یک میانبر که سبک را بر اساس نام حل یا ایجاد می‌کند) را افشا می‌کنند. ParagraphFormat.Style و ParagraphFormat.StyleName یک سبک پاراگراف را اعمال می‌کنند، در حالی که Font.Style و Font.StyleName یک سبک کاراکتر را به قالب‌بندی ران اعمال می‌نمایند. ویژگی‌های LinkedStyleName، BaseStyleName و NextParagraphStyleName یک سبک، توصیف می‌کنند که این سبک چگونه به سبک‌های دیگر مرتبط است: BaseStyleName نام سبکی را که قالب‌بندی تنظیم‌نشده را از آن به ارث می‌برد، مشخص می‌کند، LinkedStyleName نام یک سبک پاراگراف/کاراکتر جفت‌شده را (همان‌طور که Word برای سبک‌های توکار مانند Heading 1 و سبک کاراکتر مرتبط آن انجام می‌دهد) تعیین می‌کند، و NextParagraphStyleName نام سبکی را که Word به پاراگراف جدیدی که پس از پاراگرافی با این سبک تایپ می‌شود اختصاص می‌دهد، مشخص می‌کند.

سبک‌های جدول و قالب‌بندی شرطی

TableStyle Style را با ویژگی‌های layout جدول مانند Alignment، CellSpacing، LeftIndent، Shading، VerticalAlignment و Padding (LeftPadding، RightPadding، TopPadding، BottomPadding) گسترش می‌دهد، به‌علاوه RowStripe و ColumnStripe که کنترل می‌کنند الگوی باندینگ بر روی چند ردیف یا ستون تکرار شود. فراتر از قالب‌بندی یکسان جدول، TableStyle.ConditionalStyles یک ConditionalStyleCollection باز می‌گرداند که یک ConditionalStyle برای هر ناحیه جدول در بر دارد — FirstRow، LastRow، FirstColumn، LastColumn، OddRowBanding، EvenRowBanding، OddColumnBanding، EvenColumnBanding، و چهار سلول گوشه‌ای (TopLeftCell، TopRightCell، BottomLeftCell، BottomRightCell). هر ConditionalStyle ویژگی‌های Font، ParagraphFormat، Shading، Borders و padding سلول خود را دارد، و ویژگی Type آن گزارش می‌دهد که کدام ناحیه ConditionalStyleType را نمایندگی می‌کند. ConditionalStyle.ClearFormatting() و ConditionalStyleCollection.ClearFormatting() قالب‌بندی را برای یک ناحیه یا تمام مجموعه نواحی شرطی بازنشانی می‌کنند.

متادیتای سبک و پرچم‌های رفتار

چندین ویژگی بولی و عددی بر روی Style کنترل می‌کنند که Word یک سبک را در رابط کاربری خود چگونه رفتار می‌کند نه اینکه چگونه رندر شود: Locked مانع تغییر سبک زمانی که حفاظت قالب‌بندی فعال است، می‌شود، IsQuickStyle تعیین می‌کند آیا سبک در گالری سریع-سبک ظاهر می‌شود یا نه، AutomaticallyUpdate باعث می‌شود سبک خود را از قالب‌بندی مستقیم اعمال‌شده به‌صورت دستی بازتعریف کند، SemiHidden و UnhideWhenUsed نمایش در لیست سبک‌ها را قبل و بعد از اولین استفاده کنترل می‌کنند، و Priority ترتیب مرتب‌سازی در گالری را تحت تأثیر قرار می‌دهد. همچنین یک سبک هنگامی که شماره‌گذاری فهرست را تعریف می‌کند، ویژگی‌های List و ListFormat را افشا می‌کند، و Style.Remove() سبک را از StyleCollection آن حذف می‌کند.


نکات و بهترین شیوه‌ها

  • بهتر است به‌جای جستجو بر اساس نام هنگام یافتن یک سبک داخلی، از ایندکس‌گر StyleCollection با مقدار StyleIdentifier استفاده کنید — نام‌ها بومی‌سازی می‌شوند، اما مقادیر StyleIdentifier بومی‌سازی نمی‌شوند.
  • برای ساخت سلسله‌مراتب سبک‌ها BaseStyleName را تنظیم کنید (به عنوان مثال، مجموعه‌ای از سبک‌های عنوان که همه گزینه‌های قلم را از یک سبک پایه به ارث می‌برند) به جای تکرار قالب‌بندی در هر سبک.
  • هنگام کپی کردن یک سبک بین اسناد، به جای خواندن و اعمال دستی هر ویژگی قالب‌بندی، از StyleCollection.AddCopy(style) استفاده کنید.
  • ناحیه‌های TableStyle.ConditionalStyles را برای جدول‌های نواردار پیکربندی کنید به جای قالب‌بندی دستی ردیف‌های متناوب در کد — قالب‌بندی هر ناحیه ConditionalStyle بر اساس ConditionalStyleType آن اعمال می‌شود، نه با تنظیم قالب‌بندی مستقیم بر روی ردیف‌های منفرد.
  • قبل از حذف یا تغییر نام یک سبک به صورت برنامه‌نویسی، Style.BuiltIn را بررسی کنید؛ سبک‌های پیش‌فرض معمولاً توسط نام در سایر بخش‌های سند ارجاع داده می‌شوند.

مشکلات رایج

مشکلدلیلرفع
StyleCollection indexer برگردانده می‌کند null برای جستجوی نامنام سبک در این سند وجود ندارد، یا یک سبک پیش‌فرض هنوز استفاده نشده است به‌طوری که Word آن را ایجاد نکرده استبرای نام‌های جایگزین، Style.Aliases را بررسی کنید، یا به‌جای آن از نمایه‌ساز StyleCollection با یک StyleIdentifier برای سبک‌های پیش‌فرض استفاده کنید
تنظیم StyleName به‌طور غیرمنتظره یک سبک جدید ایجاد می‌کندStyleName سبک نام‌گذاری‌شده را ایجاد می‌کند اگر قبلاً در مجموعه موجود نباشدابتدا از نمایه‌ساز StyleCollection استفاده کنید تا وجود سبک را تأیید کنید، یا شیء Style را مستقیماً از طریق ویژگی Style اختصاص دهید
قاب‌بندی جدول پس از اعمال TableStyle ظاهر نمی‌شودبخش‌های قالب‌بندی شرطی (OddRowBanding، EvenRowBanding و غیره) هرگز روی TableStyle.ConditionalStyles پیکربندی نشدندقالب‌بندی را بر روی ورودی‌های ConditionalStyle مرتبط در ConditionalStyleCollection تنظیم کنید
تغییر سبک بر محتوایی که قبلاً از آن سبک استفاده می‌کند تأثیری نداردقالب‌بندی مستقیم (دستی) بر روی سبک اعمال شد و بر اولویت داردقالب‌بندی مستقیم را در بخش‌ها/پاراگراف‌های تحت تأثیر پاک کنید، یا Style.AutomaticallyUpdate را تنظیم کنید

FAQ

چگونه می‌توانم مجموعه‌ی تمام سبک‌ها را در یک سند دریافت کنم؟

به Document.Styles مراجعه کنید، که یک StyleCollection را برمی‌گرداند که شامل تمام Styleهای پیش‌فرض و تعریف‌شده توسط کاربر در آن سند است.

تفاوت بین Style و StyleIdentifier چیست؟

Style شیء سبک واقعی با قالب‌بندی آن است؛ StyleIdentifier یک مقدار enum مستقل از زبان است که برای یافتن مقدار خاصی استفاده می‌شود درون‌ساخت سبک بدون در نظر گرفتن زبان سند، از طریق StyleCollection نمایه‌ساز.

سبک‌های جدول چگونه با سبک‌های پاراگراف یا کاراکتر متفاوت هستند؟

TableStyle یک زیرکلاس از Style است که ویژگی‌های چیدمان جدول (Alignment، CellSpacing، padding) و یک مجموعه ConditionalStyles برای قالب‌بندی مخصوص به ناحیه مانند ردیف‌های بنددار، ردیف‌های سرصفحه و سلول‌های گوشه‌ای اضافه می‌کند — مفاهیم قالب‌بندی که به سبک‌های پاراگراف یا کاراکتر اعمال نمی‌شوند.

آیا می‌توانم یک سبک کاملاً جدید ایجاد کنم به جای تغییر یک سبک موجود؟

بله — StyleCollection.Add(type, name) را با StyleType موردنظر و یک نام جدید صدا بزنید تا یک سبک خالی ایجاد شود، سپس ویژگی‌های قالب‌بندی آن (Font، ParagraphFormat، و غیره برای سبک‌های پاراگراف/کاراکتر) را تنظیم کنید.

چگونه می‌توانم یک سبک را کپی کنم، حتی از سند دیگری؟

از StyleCollection.AddCopy(style) استفاده کنید و یک شیء Style را پاس کنید (که می‌تواند از StyleCollection یک Document متفاوت آمده باشد) تا یک کپی از آن به مجموعه هدف اضافه شود.


API Reference خلاصه

کلاس/متدتوضیح
Styleیک سبک پاراگراف، کاراکتر، جدول یا فهرست تک که درون‌ساخت یا توسط کاربر تعریف شده باشد
StyleCollectionمجموعهٔ تمام سبک‌ها در یک سند، که از طریق Document.Styles دسترسی می‌شود
نمایه‌ساز StyleCollection بر اساس نامجست‌وجوی یک سبک بر اساس نام نمایشی آن، مثلاً styles["Heading 1"]
نمایه‌ساز StyleCollection بر اساس شناسهجست‌وجوی یک سبک پیش‌فرض بر اساس شناسه‌ای مستقل از زبان، مثلاً styles[StyleIdentifier.Heading1]
StyleCollection.Add(type, name)ایجاد یک سبک جدید و خالی از نوع StyleType داده‌شده
StyleCollection.AddCopy(style)یک سبک موجود را به این مجموعه کپی کنید
StyleTypeEnum متمایز کنندهٔ سبک‌های Paragraph، Character، Table و List
StyleIdentifierشناسه‌ای مستقل از locale برای یک سبک داخلی
TableStyleیک زیرکلاس Style برای قالب‌بندی جدول، شامل استایل‌دهی شرطی برای هر ناحیه
ConditionalStyleCollectionمجموعه‌ای از ورودی‌های ConditionalStyle برای هر ناحیه روی یک TableStyle
ConditionalStyleقالب‌بندی (قلم، قالب پاراگراف، سایه‌گذاری، حاشیه‌ها، فاصله داخلی) برای یک ناحیه جدول
ConditionalStyleTypeشمارشی که ناحیه جدول را که یک ConditionalStyle به آن اعمال می‌شود شناسایی می‌کند

همچنین ببینید:

 فارسی