کار با استایل ها

کلاس StyleCollection برای مدیریت تنظیمات داخلی و اعمال تنظیمات تعریف شده توسط کاربر به سبک ها استفاده می شود.

نحوه استخراج محتوا بر اساس سبک ها

در یک سطح ساده، بازیابی محتوا بر اساس سبک ها از یک سند ورد می تواند برای شناسایی، لیست و شمارش پاراگراف ها و اجراهای متن فرمت شده با یک سبک خاص مفید باشد. به عنوان مثال، ممکن است لازم باشد انواع خاصی از محتوا را در سند شناسایی کنید، مانند مثال ها، عناوین، مرجع ها، کلمات کلیدی، نام شکل ها و مطالعات موردی.

برای اینکه این کار را چند قدم جلوتر ببریم، می توان از این برای استفاده از ساختار سند، که توسط سبک هایی که استفاده می کند تعریف شده است، برای استفاده مجدد از سند برای خروجی دیگر، مانند HTML استفاده کرد. در واقع این است که چگونه مستندات Aspose ساخته شده است، قرار دادن Aspose.Words به آزمون. ابزاری که با استفاده از Aspose.Words ساخته شده است، اسناد کلمه منبع را می گیرد و آنها را به موضوعات در سطوح خاصی تقسیم می کند. یک فایل XML با استفاده از Aspose.Words تولید می شود که برای ساخت درخت ناوبری که می توانید در سمت چپ ببینید استفاده می شود. و سپس Aspose.Words هر موضوع را به HTML تبدیل می کند.

راه حل برای بازیابی متن فرمت شده با سبک های خاص در یک سند ورد به طور معمول اقتصادی و ساده با استفاده از Aspose.Words است.

راه حل

برای نشان دادن اینکه چگونه به راحتی Aspose.Words بازیابی محتوا را بر اساس سبک ها انجام می دهد، بیایید به یک مثال نگاه کنیم. در این مثال، ما می خواهیم متن فرمت شده با یک سبک پاراگراف خاص و یک سبک کاراکتر را از یک سند Word نمونه بازیابی کنیم. در سطح بالا، این شامل:

  • باز کردن یک سند ورد با استفاده از کلاس Document.
  • گرفتن مجموعه ای از تمام پاراگراف ها و تمام اجرا می شود در سند.
  • انتخاب تنها پاراگراف های مورد نیاز و اجرا می شود. به طور خاص، ما متن فرمت شده با سبک پاراگراف “عنوان 1” و سبک کاراکتر “تأکید شدید” را از این نمونه سند Word بازیابی خواهیم کرد.

working-with-styles-aspose-words-cpp-1

در این نمونه سند، متن با سبک پاراگراف “Heading 1 ““Insert Tab”، “Quick Styles” و “Theme” فرمت شده است و متن با سبک کاراکتر “intense imprasis” چندین نمونه از متن آبی، کج و جسورانه مانند “galleries” و “alveral look” است.

کد خبر

پیاده سازی یک پرس و جو مبتنی بر سبک در مدل Aspose.Words document object بسیار ساده است، زیرا به سادگی از ابزارهایی استفاده می کند که در حال حاضر در محل هستند. دو روش کلاس برای این راه حل اجرا می شود:# ParagraphsByStyleName – این روش یک آرایه از آن پاراگراف ها را در سند که نام سبک خاصی دارند، بازیابی می کند.# RunsByStyleName – این روش یک آرایه از آن اجراها را در سند که نام سبک خاصی دارند، بازیابی می کند. هر دو این روش ها بسیار مشابه هستند، تنها تفاوت ها انواع گره و نمایش اطلاعات سبک در پاراگراف و گره های اجرا است. در اینجا یک پیاده سازی از ParagraphsByStyleName است. در زیر مثال تمام پاراگراف های فرمت شده با سبک مشخص شده را پیدا کنید.

همچنین لازم به ذکر است که مجموعه پاراگراف ها هزینه ای فوری ایجاد نمی کند زیرا پاراگراف ها فقط زمانی در این مجموعه بارگذاری می شوند که به موارد موجود در آنها دسترسی داشته باشید. سپس، تنها کاری که باید انجام دهید این است که از طریق مجموعه، با استفاده از استاندارد برای هر اپراتور و اضافه کردن پاراگراف هایی که سبک مشخص شده را به آرایه paragraphsWithStyle دارند، بروید. نام سبک Paragraph را می توان در سبک یافت. نام خاصیت شی Paragraph.ParagraphFormat. اجرای RunsByStyleName تقریبا یکسان است، اگرچه ما به وضوح از NodeType.Run برای بازیابی گره های اجرا استفاده می کنیم. ویژگی Font.Style یک شی Run برای دسترسی به اطلاعات سبک در گره های Run استفاده می شود. مثال below code تمام اجراها را با سبک مشخص شده فرمت کنید.

هنگامی که هر دو پرس و جو اجرا می شوند، تنها کاری که باید انجام دهید این است که یک شیء سند را منتقل کنید و نام سبک محتوایی را که می خواهید بازیابی کنید مشخص کنید: در زیر نمونه پرس و جو را اجرا کنید و نتایج را نمایش دهید. شما می توانید فایل قالب این مثال را از اینجا دانلود کنید.

نتیجه نهایی

وقتی همه چیز انجام شد، اجرای نمونه خروجی زیر را نمایش می دهد:

working-with-styles-aspose-words-cpp-2

همانطور که می بینید، این یک مثال بسیار ساده است، که تعداد و متن پاراگراف های جمع آوری شده را نشان می دهد و در نمونه سند Word اجرا می شود.

چگونه با جدول محتویات فیلد وارد و کار کنیم

اغلب شما با اسناد حاوی جدول محتویات (TOC) کار خواهید کرد. با استفاده از Aspose.Words می توانید جدول محتویات خود را وارد کنید یا جدول محتویات موجود را با استفاده از چند خط کد به طور کامل در سند بازسازی کنید. این مقاله نحوه کار با جدول محتویات را شرح می دهد و نشان می دهد:

  • چگونه یک نام تجاری جدید را وارد کنیم TOC
  • به روز رسانی جدید یا موجود TOCs در سند.
  • سوئیچ ها را برای کنترل قالب بندی و ساختار کلی f TOC مشخص کنید.
  • چگونه سبک ها و ظاهر جدول محتویات را تغییر دهیم.
  • چگونه یک فیلد کامل TOC را همراه با تمام ورودی های سند حذف کنیم.

فیلد های TC را وارد کنید

اغلب یک خط متن خاص برای TOC تعیین می شود و با یک فیلد TC مشخص می شود. راه ساده برای انجام این کار در MS Word برجسته کردن متن و فشار دادن ALT+SHIFT+O است. این به طور خودکار یک فیلد TC با استفاده از متن انتخاب شده ایجاد می کند. همین تکنیک را می توان از طریق کد انجام داد. کد زیر متن را با ورودی مطابقت می دهد و یک فیلد TC را در همان موقعیت متن قرار می دهد. کد بر اساس همان تکنیک مورد استفاده در مقاله است. مثال زیر نشان می دهد که چگونه یک فیلد TC را در متن در یک سند پیدا و وارد کنید.

جدول محتویات را تغییر دهید

تغییر قالب بندی سبک ها

قالب بندی ورودی ها در TOC از سبک های اصلی ورودی های مشخص شده استفاده نمی کند، در عوض، هر سطح با استفاده از یک سبک معادل TOC فرمت می شود. به عنوان مثال، سطح اول در TOC با سبک TOC1، سطح دوم با سبک TOC2 و غیره فرمت شده است. این بدان معنی است که برای تغییر ظاهر TOC این سبک ها باید اصلاح شوند. در Aspose.Words این سبک ها توسط locale independent StyleIdentifier.TOC1 تا StyleIdentifier.TOC9 نشان داده می شوند و می توانند از مجموعه Document.Styles با استفاده از این شناسه ها بازیابی شوند. هنگامی که سبک مناسب سند بازیابی شده است، قالب بندی برای این سبک می تواند اصلاح شود. هر گونه تغییر در این سبک ها به طور خودکار در TOCs در سند منعکس خواهد شد. مثال below code یک ویژگی قالب بندی را که در سبک سطح اول TOC استفاده می شود تغییر می دهد.

همچنین مفید است که توجه داشته باشید که هر قالب بندی مستقیم یک پاراگراف (تعریف شده در پاراگراف خود و نه در سبک) مشخص شده برای شامل TOC در ورودی در TOC کپی خواهد شد. به عنوان مثال، اگر عنوان 1 style برای علامت گذاری محتوا برای TOC استفاده شود و این سبک دارای قالب بندی جسورانه باشد در حالی که پاراگراف همچنین دارای قالب بندی منحنی است که مستقیما به آن اعمال می شود. ورودی TOC حاصل از این کار جسورانه نخواهد بود زیرا این بخشی از قالب بندی سبک است اما به صورت مورب خواهد بود زیرا این به طور مستقیم در پاراگراف قالب بندی شده است. همچنین می توانید قالب بندی جدا کننده های مورد استفاده بین هر ورودی و شماره صفحه را کنترل کنید. به طور پیش فرض، این یک خط نقطه ای است که با استفاده از یک کاراکتر تب و یک توقف تب راست که در نزدیکی حاشیه راست قرار دارد، به شماره گذاری صفحه گسترش می یابد.

با استفاده از کلاس Style برای سطح خاص TOC که می خواهید تغییر دهید، می توانید نحوه ظاهر شدن این موارد را در سند نیز تغییر دهید. برای تغییر نحوه ظاهر این ابتدا باید Style.ParagraphFormat برای بازیابی قالب بندی پاراگراف برای سبک فراخوانده شود. از این، tab stops را می توان با فراخوانی ParagraphFormat.TabStops و tab stop مناسب اصلاح کرد. با استفاده از همین تکنیک خود برگه را می توان به طور کامل جابجا یا حذف کرد. مثال below code نشان می دهد که چگونه موقعیت tab stop راست را در پاراگراف های مرتبط TOC تغییر دهید. شما می توانید فایل قالب این مثال را از اینجا دانلود کنید.

حذف جدول محتویات از سند

جدول محتویات را می توان با حذف تمام گره های موجود بین گره FieldStart و FieldEnd فیلد TOC از سند حذف کرد. کد زیر این را نشان می دهد. حذف فیلد TOC ساده تر از یک فیلد معمولی است زیرا ما فیلد های آشیانه ای را پیگیری نمی کنیم. در عوض، ما بررسی می کنیم که گره FieldEnd از نوع FieldType.FieldTOC است که به این معنی است که ما با پایان جریان TOC مواجه شده ایم. این تکنیک می تواند در این مورد بدون نگرانی در مورد هر فیلد آشیانه ای استفاده شود زیرا ما می توانیم فرض کنیم که هر سند به درستی شکل گرفته هیچ فیلد کاملا آشیانه ای در داخل فیلد TOC دیگری نخواهد داشت. ابتدا گره های FieldStart هر TOC جمع آوری و ذخیره می شوند. سپس TOC مشخص شده شمارش می شود تا تمام گره های داخل فیلد بازدید و ذخیره شوند. سپس گره ها از سند حذف می شوند. مثال below code نشان می دهد که چگونه یک TOC مشخص شده را از یک سند حذف کنیم. شما می توانید فایل قالب این مثال را از اینجا دانلود کنید.

برای قرار دادن سبک های مختلف پاراگراف، جداکننده سبک را وارد کنید

جداکننده سبک را می توان به پایان یک پاراگراف با استفاده از میانبر صفحه کلید Ctrl + Alt + Enter به کلمه MS اضافه کرد. این ویژگی اجازه می دهد تا دو سبک پاراگراف مختلف در یک پاراگراف چاپی منطقی استفاده شود. اگر می خواهید متنی از ابتدای یک عنوان خاص در یک جدول محتویات ظاهر شود اما نمی خواهید کل عنوان در جدول محتویات باشد، می توانید از این ویژگی استفاده کنید. مثال below code نشان می دهد که چگونه یک جدا کننده سبک را برای قرار دادن سبک های پاراگراف مختلف وارد کنید.

کپی کردن تمام سبک ها از قالب

مواردی وجود دارد که می خواهید همه سبک ها را از یک سند به سند دیگر کپی کنید. شما می توانید از روش Document.CopyStylesFromTemplate برای کپی کردن سبک ها از قالب مشخص شده به یک سند استفاده کنید. هنگامی که سبک ها از یک قالب به یک سند کپی می شوند، سبک های مشابه در سند دوباره تعریف می شوند تا با توصیفات سبک در قالب مطابقت داشته باشند. سبک های منحصر به فرد از قالب به سند کپی شده است. سبک های منحصر به فرد در سند دست نخورده باقی می مانند. مثال below code نشان می دهد که چگونه سبک ها را از یک سند به سند دیگر کپی کنید.