کار با سبک ها و تم ها
کلاس StyleCollection برای مدیریت داخلی و اعمال تنظیمات تعریف شده توسط کاربر برای استایل ها استفاده می شود.
دسترسی به سبک ها
شما می توانید مجموعه ای از سبک های تعریف شده در سند را با استفاده از ویژگی Document.styles دریافت کنید. این مجموعه هر دو سبک داخلی و تعریف شده توسط کاربر را در یک سند نگه می دارد. یک سبک خاص را می توان با نام/نام مستعار، شناسه سبک یا نمایه آن به دست آورد. مثال کد زیر نحوه دسترسی به مجموعه سبک های تعریف شده در سند را نشان می دهد.
نحوه استخراج محتوا بر اساس سبک
در یک سطح ساده، بازیابی محتوا بر اساس سبک ها از یک سند Word می تواند برای شناسایی، فهرست کردن و شمارش پاراگراف ها و اجراهای متن فرمت شده با یک سبک خاص مفید باشد. برای مثال، ممکن است لازم باشد انواع خاصی از محتوا را در سند شناسایی کنید، مانند مثالها، عناوین، مراجع، کلمات کلیدی، نام شکلها و مطالعات موردی.
برای چند قدم جلوتر از این، میتوان از آن برای استفاده از ساختار سند، که با سبکهایی که استفاده میکند، استفاده کرد تا سند را برای خروجی دیگری، مانند HTML، دوباره هدف قرار دهد. این در واقع نحوه ساخت اسناد Aspose است که Aspose.Words را مورد آزمایش قرار می دهد. ابزاری که با استفاده از Aspose.Words ساخته شده است، اسناد Word منبع را می گیرد و آنها را به موضوعات در سطوح سرفصل خاصی تقسیم می کند. یک فایل XML با استفاده از Aspose.Words تولید می شود که برای ساختن درخت ناوبری که در سمت چپ می بینید استفاده می شود. و سپس Aspose.Words هر موضوع را به HTML تبدیل می کند.
راه حل برای بازیابی متن فرمت شده با سبک های خاص در یک سند Word معمولاً با استفاده از Aspose.Words مقرون به صرفه و ساده است.
راه حل
برای نشان دادن اینکه Aspose.Words چگونه به راحتی بازیابی محتوا را بر اساس سبک ها انجام می دهد، اجازه دهید به یک مثال نگاه کنیم. در این مثال، میخواهیم متن قالببندی شده با یک سبک پاراگراف خاص و یک سبک کاراکتر را از یک سند Word نمونه بازیابی کنیم. در سطح بالا، این شامل موارد زیر است:
- باز کردن یک سند Word با استفاده از کلاس Document.
- دریافت مجموعه ای از تمام پاراگراف ها و همه اجراها در سند.
- فقط پاراگراف ها و اجراهای مورد نیاز را انتخاب کنید. به طور خاص، ما متن قالببندی شده با سبک پاراگراف “هدینگ 1” و سبک کاراکتر “تأکید شدید” را از این نمونه سند Word بازیابی میکنیم.
در این سند نمونه، متن قالببندیشده با سبک پاراگراف “عنوان 1” “درج برگه”، “سبکهای سریع” و “موضوع” است و متن قالببندی شده با سبک کاراکتر “تاکید شدید” چندین نمونه آبی است. متن های ایتالیک و پررنگ مانند “گالری ها” و “نمای کلی”.
کد
اجرای یک پرس و جو مبتنی بر سبک در مدل شی سند Aspose.Words بسیار ساده است، زیرا به سادگی از ابزارهایی استفاده می کند که از قبل در محل موجود هستند. دو روش کلاس برای این راه حل پیاده سازی شده است:
- پاراگراف_براساس_سبک_نام - این روش آرایه ای از آن پاراگراف ها را در سند بازیابی می کند که نام سبک خاصی دارند.
- runs_by_style_name - این روش آرایه ای از اجراها را در سند که نام سبک خاصی دارند بازیابی می کند. هر دوی این روش ها بسیار شبیه به هم هستند، تنها تفاوت در انواع گره ها و نمایش اطلاعات سبک در پاراگراف و گره های اجرا شده است. در اینجا یک پیاده سازی از
paragraphs_by_style_name
است: مثال زیر همه پاراگراف های فرمت شده با سبک مشخص شده را پیدا کنید.
این پیاده سازی همچنین از متد Document.get_child_nodes کلاس Document استفاده می کند که مجموعه ای از تمام گره ها را با نوع مشخص شده برمی گرداند که در این مورد در تمام پاراگراف ها وجود دارد.
توجه داشته باشید که پارامتر دوم روش Document.get_child_nodes روی True
تنظیم شده است. این روش Document.get_child_nodes را مجبور میکند تا از همه گرههای فرزند به صورت بازگشتی انتخاب کند، نه اینکه فقط فرزندان فوری را انتخاب کند.
همچنین شایان ذکر است که مجموعه پاراگراف ها سربار فوری ایجاد نمی کند زیرا پاراگراف ها تنها زمانی در این مجموعه بارگذاری می شوند که به موارد موجود در آنها دسترسی داشته باشید. سپس، تنها کاری که باید انجام دهید این است که با استفاده از عملگر استاندارد foreach، مجموعه را مرور کنید و پاراگراف هایی را که سبک مشخص شده را دارند به آرایه paragraphs_with_style اضافه کنید. نام سبک Paragraph
را می توان در ویژگی Style.name شی Paragraph.paragraph_format یافت. پیاده سازی runs_by_style_name تقریباً یکسان است، اگرچه ما به وضوح از NodeType.RUN برای بازیابی گره های اجرا شده استفاده می کنیم. ویژگی Font.style یک شی Run برای دسترسی به اطلاعات سبک در گره های Run استفاده می شود. مثال زیر همه اجراهای فرمت شده با سبک مشخص شده را پیدا کنید.
هنگامی که هر دو پرس و جو اجرا می شوند، تنها کاری که باید انجام دهید این است که یک شی سند را ارسال کنید و نام سبک محتوایی را که می خواهید بازیابی کنید مشخص کنید: در زیر مثال، پرس و جوها را اجرا کنید و نتایج را نمایش دهید. فایل قالب این نمونه را می توانید از اینجا دانلود کنید.
نتیجه نهایی
وقتی همه چیز تمام شد، اجرای نمونه خروجی زیر را نمایش می دهد:
همانطور که می بینید، این یک مثال بسیار ساده است که تعداد و متن پاراگراف های جمع آوری شده و اجرا شده در نمونه سند Word را نشان می دهد.
همه سبک ها را از قالب کپی کنید
مواردی وجود دارد که می خواهید همه سبک ها را از یک سند به سند دیگر کپی کنید. می توانید از روش Document.copy_styles_from_template برای کپی سبک ها از الگوی مشخص شده در یک سند استفاده کنید. هنگامی که سبکها از یک الگو به یک سند کپی میشوند، سبکهای مشابه در سند برای مطابقت با توضیحات سبک در الگو دوباره تعریف میشوند. سبک های منحصر به فرد از الگو در سند کپی می شود. سبک های منحصر به فرد در سند دست نخورده باقی می مانند. مثال Below code نحوه کپی کردن سبک ها از یک سند به سند دیگر را نشان می دهد.
چگونه می توان ویژگی های تم را دستکاری کرد
ما API اولیه را در Aspose.Words اضافه کردهایم تا به ویژگیهای تم سند دسترسی داشته باشیم. در حال حاضر، این API شامل اشیاء عمومی زیر است:
در اینجا نحوه دریافت ویژگی های تم آمده است:
و در اینجا نحوه تنظیم ویژگی های تم است: