איך לעבוד עם סגנונות ב-.NET

איך לעבוד עם סגנונות ב-.NET

מדריך זה מציג כיצד לחפש, ליישם וליצור סגנונות פסקה, תו, טבלה ורשימה ב Aspose.Words קוד פתוח חינמי עבור .NET, באמצעות Style, StyleCollection, ו TableStyle מחלקות. הוא מכסה קריאת אוסף הסגנונות של מסמך, חיפוש סגנונות באופן אמין במגוון שפות, יישום סגנונות על פסקאות ורצפים, יצירה והעתקת סגנונות, והגדרת עיצוב מותנה לפי אזור על סגנונות טבלאות.

מדריך שלב אחר שלב

שלב 1: התקנת החבילה

Aspose.Words FOSS for .NET עדיין לא מפרסם חבילה של NuGet – במקום זאת בנה את הספרייה מהמקור. Clone https://github.com/aspose-words-foss/Aspose.Words-FOSS-for-.NET.git, then build Aspose.Words.sln בתצורת Release עם ה-.NET SDK והפנה אל הרכיב Aspose.Words שנוצר בפרויקט שלך. הספרייה ממוקדת ל-.NET Standard 2.0, ולכן היא פועלת על .NET Framework 4.6.2+ ו-.NET 6/8/10.


שלב 2: ייבוא המחלקות הנדרשות

הוסף הנחיית using Aspose.Words; – Style, StyleCollection, TableStyle, StyleType, StyleIdentifier, ConditionalStyle, ConditionalStyleCollection ו-ConditionalStyleType כולם נמצאים במרחב השמות Aspose.Words לצד Document.


שלב 3: קרא את אוסף הסגנונות של המסמך

Document.Styles מחזיר StyleCollection – כל Style מובנה ומוגדר על-ידי המשתמש שמקושר למסמך. StyleCollection.Count מדווח כמה סגנונות הוא מכיל, ו-DefaultFont / DefaultParagraphFormat מתארים את העיצוב ברירת המחדל ברמת המסמך שהופיע בתוכן החדש לפני שהוחל סגנון מפורש.


שלב 4: חיפוש סגנון באופן אמין

שלוף סגנון לפי שם התצוגה שלו באמצעות האינדקסר StyleCollection, styles[name]. עבור סגנונות מובנים, העדף להשתמש באותו אינדקסר עם ערך enum של StyleIdentifier במקום זאת – styles[sti] – שמות מתורגמים, אך ערכי StyleIdentifier אינם, ולכן חיפוש לפי מזהה פועל באותו אופן ללא תלות בשפת המסמך. בדוק את Style.Aliases עבור שמות חלופיים שה-Word מזהה עבור אותו סגנון אם האינדקסר לא מוצא את מה שאתה מצפה, ובדוק את Style.BuiltIn לפני שמסירים או משנים שם של סגנון בתכנות, מכיוון שסגנונות מובנים מקושרים לעיתים קרובות בשם במקומות אחרים במסמך.


שלב 5: החל סגנון על פסקאות או ריצות

עצמי עיצוב שנושאים סגנון חושפים גם מאפיין Style (העצם Style עצמו) וגם מאפיין StyleName (קיצור שמאתר, או יוצר, סגנון לפי שם). הגדר את ParagraphFormat.Style או ParagraphFormat.StyleName כדי להחיל סגנון פסקה, ואת Font.Style או Font.StyleName כדי להחיל סגנון תו על העיצוב של ריצה. הקצאת StyleName עם שם שאינו קיים עדיין באוסף תיצור את הסגנון — אמת שהסגנון קיים תחילה באמצעות האינדקסר StyleCollection, או הקצה ישירות את העצם Style, אם זה אינו ההתנהגות הרצויה.


שלב 6: בנה היררכיות של סגנונות

קרא את BaseStyleName כדי למצוא את הסגנון שממנה סגנון נתון יורש עיצוב שלא הוגדר, את LinkedStyleName עבור סגנון פסקה/תו משולב (כפי שמגדיר Word סגנונות מובנים כגון כותרת והסגנון התו הקשור לה), ואת NextParagraphStyleName עבור הסגנון ש-Word משייך לפסקה חדשה שנכתבת לאחר פסקה המשתמשת בסגנון זה. הגדר את BaseStyleName בעת הגדרת קבוצה של סגנונות קשורים — כגון משפחת סגנונות כותרת שכולם צריכים לרשת בחירות גופנים מסגנון בסיס אחד — במקום לחזור על אותו עיצוב בכל סגנון.


שלב 7: צור או העתק סגנון

הפעל StyleCollection.Add(type, name) עם StyleType (Paragraph, Character, Table, או List) ושם כדי ליצור סגנון חדש וריק, ואז קבע את המאפיינים Font ו-ParagraphFormat לפי הצורך. כדי לשכפל סגנון קיים – כולל אחד מ-Document’s StyleCollection שונה – הפעל StyleCollection.AddCopy(style) במקום לקרוא ידנית וליישם מחדש כל מאפיין עיצוב. הפעל Style.Remove() כדי למחוק סגנון מהאוסף שלו.


שלב 8: הגדרת סגנונות טבלה ועיצוב מותנה

TableStyle מרחיב את Style עם תכונות פריסת טבלה – Alignment, CellSpacing, LeftIndent, Shading, VerticalAlignment, ו-ארבעת תכונות הריפוד (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 שלו, וכן ריפוד תאים, כאשר Type מדווח איזו אזור ConditionalStyleType הוא מייצג; קבע עיצוב על אזורים אלה במקום על שורות טבלה בודדות כדי לקבל עיצוב מוטה, שורת-כותרת, או תאי-פינה שמחזיק מעמד אחרי עריכת הטבלה.


שלב 9: איפוס או הסרת עיצוב

הפעל ConditionalStyle.ClearFormatting() כדי לאפס אזור מותנה אחד, או ConditionalStyleCollection.ClearFormatting() כדי לאפס את כל האזורים ב-TableStyle בבת אחת. StyleCollection.ClearQuickStyleGallery() מסיר כל סגנון ממסד האוסף המהיר של ממשק המשתמש של Word מבלי למחוק את הסגנונות עצמם — שימושי לצמצום הגלריה מבלי לגעת בתוכן המסמך.

בעיות נפוצות ופתרונות

StyleCollection האינדקסר מחזיר ערך null לחיפוש שם שם הסגנון אינו קיים במסמך זה, או שסגנון מובנה עדיין לא שומש, ולכן Word לא יצר אותו. בדוק Style.Aliases לחיפוש שמות חלופיים, או להשתמש ב StyleCollection מאתחל עם a StyleIdentifier במקום זאת עבור סגנונות מובנים.

הגדרת StyleName באופן בלתי צפוי יוצרת סגנון חדש StyleName יוצרת את הסגנון בשם אם הוא עדיין לא קיים באוסף. השתמש ב StyleCollection במאתחל תחילה כדי לאשר שהסגנון קיים, או להקצות את Style האובייקט ישירות דרך ה Style מאפיין במקום StyleName.

הפסי הטבלה אינם מופיעים לאחר החלת TableStyle אזורי העיצוב המותנה – OddRowBanding, EvenRowBanding, ו-דומים לכך – מעולם לא הוגדרו ב- TableStyle.ConditionalStyles. הגדר עיצוב על הרלוונטיים ConditionalStyle ערכים ב ConditionalStyleCollection.

שינוי סגנון לא משפיע על תוכן שכבר משתמש בסגנון עיצוב ישיר (ידני) המיושם מעל הסגנון מקבל עדיפות על פני ההגדרות של הסגנון עצמו. נקה עיצוב ישיר על הריצות או הפסקאות המושפעות, או הגדר Style.AutomaticallyUpdate כך שהסגנון מגדיר מחדש את עצמו מהעיצוב הידני הזה.

חיפוש סגנון מובנה נכשל במסמך שנכתב בשפה אחרת ה StyleCollection האינדקסר משווה על שם התצוגה, שהוא מתורגם, כאשר הוא נקרא בשם. השתמש באותו אינדקסר עם StyleIdentifier ערך ה-enum במקום זאת, מכיוון שמזהה זה אינו תלוי במיקום.

שאלות נפוצות

איך אני מקבל את האוסף של כל הסגנונות במסמך?

קרא את 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 שונה – כדי להוסיף עותק שלו לאוסף היעד.

ראה גם

 עברית