کار با سبکها
کار با سبکها
این راهنما نشان میدهد چگونه با سبکهای پاراگراف، کاراکتر، جدول و فهرست در کار کنیم 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) | یک سبک موجود را به این مجموعه کپی کنید |
StyleType | Enum متمایز کنندهٔ سبکهای Paragraph، Character، Table و List |
StyleIdentifier | شناسهای مستقل از locale برای یک سبک داخلی |
TableStyle | یک زیرکلاس Style برای قالببندی جدول، شامل استایلدهی شرطی برای هر ناحیه |
ConditionalStyleCollection | مجموعهای از ورودیهای ConditionalStyle برای هر ناحیه روی یک TableStyle |
ConditionalStyle | قالببندی (قلم، قالب پاراگراف، سایهگذاری، حاشیهها، فاصله داخلی) برای یک ناحیه جدول |
ConditionalStyleType | شمارشی که ناحیه جدول را که یک ConditionalStyle به آن اعمال میشود شناسایی میکند |