---
title: "עבודה עם סגנונות ב C++"
---


המחלקה [StyleCollection](https://reference.aspose.com/words/cpp/aspose.words/stylecollection/) משמשת לניהול הגדרות מובנות ולהחיל הגדרות המוגדרות על ידי המשתמש על סגנונות.

## כיצד לחלץ תוכן המבוסס על סגנונות

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

כדי לקחת זאת כמה צעדים קדימה, ניתן להשתמש בזה גם כדי למנף את מבנה המסמך, המוגדר על ידי הסגנונות שבהם הוא משתמש, כדי לייעד מחדש את המסמך לפלט אחר, כגון HTML. זה למעשה איך תיעוד האספוז בנוי, לשים Aspose.Words למבחן. כלי שנבנה באמצעות Aspose.Words לוקח את המקור Word מסמכים ומחלק אותם לנושאים ברמות כותרת מסוימות. קובץ XML מופק באמצעות Aspose.Words המשמש לבניית עץ הניווט שניתן לראות משמאל. ואז Aspose.Words ממיר כל נושא ל HTML.

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

### הפתרון

כדי להמחיש באיזו קלות Aspose.Words מטפל באחזור תוכן על סמך סגנונות, בואו נסתכל על דוגמה. בדוגמה זו, אנו הולכים לאחזר טקסט המעוצב בסגנון פיסקה ספציפי ובסגנון תו ממסמך מדגם Word. ברמה גבוהה, זה יהיה כרוך:
- פתיחת מסמך Word באמצעות הכיתה `Document`.
- קבלת אוספים של כל פסקאות וכל פועל במסמך.
- בחירת רק את הפסקאות הנדרשות פועל. באופן ספציפי, אנו נאחזר טקסט המעוצב בסגנון הפסקה 'Heading 1 וסגנון התווים 'דגש אינטנסיבי' מתוך מדגם זה Word מסמך.

![working-with-styles-aspose-words-cpp-1](working-with-styles-1.png)


במסמך מדגם זה, הטקסט המעוצב בסגנון הפסקה 'Heading 1' הוא 'הכנס כרטיסייה', 'סגנונות מהירים' ו 'נושא', והטקסט המעוצב בסגנון הדמות 'דגש עז' הוא מספר המופעים של טקסט כחול, נטוי, מודגש כגון 'גלריות' ו 'מראה כללי'.

### הקוד

יישום שאילתה מבוססת סגנון הוא די פשוט במודל אובייקט המסמך Aspose.Words, מכיוון שהוא פשוט משתמש בכלים שכבר קיימים. שתי שיטות מחלקה מיושמות לפתרון זה: # **ParagraphsByStyleName** - שיטה זו מאחזרת מערך של פסקאות אלה במסמך שיש להן שם סגנון ספציפי.# **RunsByStyleName** - שיטה זו מאחזרת מערך של אותן ריצות במסמך שיש להן שם סגנון ספציפי. שתי השיטות הללו דומות מאוד, ההבדלים היחידים הם סוגי הצמתים והייצוג של מידע הסגנון בתוך הצמתים של הפסקה והריצה. הנה יישום של ParagraphsByStyleName. להלן דוגמה מצא את כל הפסקאות המעוצבות בסגנון שצוין.

{{< gist "aspose-words-gists" "d55d8631947d283b1f0da99afa06c492" "cpp-Programming-Documents-Styles-ExtractContentBasedOnStyles-ParagraphsByStyleName.cpp" >}}

{{% alert color="primary" %}}

יישום זה משתמש גם בשיטת `Document.GetChildNodes` של הכיתה `Document`, המחזירה אוסף של כל הצמתים עם הסוג שצוין, שבמקרה זה בכל הפסקאות.

שים לב שהפרמטר השני של שיטת **Document.GetChildNodes** מוגדר כנכון. זה מכריח את שיטת **Document.GetChildNodes** לבחור מכל צמתים של ילדים באופן רקורסיבי, במקום לבחור את הילדים המיידיים בלבד.

{{% /alert %}}

כדאי גם לציין שאוסף הפסקאות אינו יוצר תקורה מיידית מכיוון שפסקאות נטענות באוסף זה רק כאשר אתה ניגש לפריטים בהן. לאחר מכן, כל שעליך לעשות הוא לעבור על האוסף, תוך שימוש בתקן עבור כל מפעיל ולהוסיף פסקאות בעלות הסגנון שצוין למערך paragraphsWithStyle. ניתן למצוא את שם הסגנון `Paragraph` בסגנון. שם מאפיין של האובייקט `Paragraph.ParagraphFormat`. היישום של RunsByStyleName כמעט זהה, אם כי ברור שאנחנו משתמשים ב `NodeType.Run` כדי לאחזר צמתים לרוץ. המאפיין `Font.Style` של אובייקט `Run` משמש לגישה למידע סגנון בצמתים **Run**. הדוגמהlow code מצא את כל הריצות המעוצבות בסגנון שצוין.

{{< gist "aspose-words-gists" "d55d8631947d283b1f0da99afa06c492" "cpp-Programming-Documents-Styles-ExtractContentBasedOnStyles-RunsByStyleName.cpp" >}}


כאשר שתי השאילתות מיושמות, כל שעליך לעשות הוא להעביר אובייקט מסמך ולציין את שמות הסגנונות של התוכן שברצונך לאחזר: להלן דוגמה הפעל שאילתות והצג תוצאות. אתה יכול להוריד את קובץ התבנית של דוגמה זו מכאן.

{{< gist "aspose-words-gists" "d55d8631947d283b1f0da99afa06c492" "cpp-Programming-Documents-Styles-ExtractContentBasedOnStyles-ExtractContentBasedOnStyles.cpp" >}}

#### תוצאה סופית

כאשר הכל נעשה, הפעלת המדגם תציג את הפלט הבא:

![working-with-styles-aspose-words-cpp-2](working-with-styles-2.png)


כפי שאתה יכול לראות, זוהי דוגמה פשוטה מאוד, המציגה את המספר והטקסט של הפסקאות שנאספו ופועלת במסמך המדגם Word.

## כיצד להכניס ולעבוד עם שדה תוכן העניינים

לעתים קרובות תעבוד עם מסמכים המכילים תוכן עניינים (TOC). באמצעות Aspose.Words אתה יכול להכניס תוכן עניינים משלך או לבנות מחדש לחלוטין את תוכן העניינים הקיים במסמך באמצעות מספר שורות קוד בלבד. מאמר זה מתאר כיצד לעבוד עם שדה תוכן העניינים ומדגים:

- כיצד להכניס מותג חדש `TOC`
- עדכון חדש או קיים TOCs במסמך.
- ציין מתגים כדי לשלוט בעיצוב ובמבנה הכללי ו TOC.
- כיצד לשנות את הסגנונות והמראה של תוכן העניינים.
- כיצד להסיר שדה שלם `TOC` יחד עם כל הערכים מהמסמך.

### הכנס TC שדות

לעתים קרובות שורת טקסט ספציפית מיועדת ל `TOC` ומסומן בשדה `TC`. הדרך הקלה לעשות זאת ב MS Word היא להדגיש את הטקסט ולחץ *ALT+SHIFT+O*. פעולה זו יוצרת אוטומטית שדה `TC` באמצעות הטקסט שנבחר. אותה טכניקה יכולה להתבצע באמצעות קוד. הקוד שלהלן ימצא טקסט התואם את הקלט ויוסיף שדה `TC` באותו מיקום כמו הטקסט. הקוד מבוסס על אותה טכניקה המשמשת במאמר. הדוגמה הבאה מראה כיצד למצוא ולהוסיף שדה `TC` בטקסט במסמך.

{{< gist "aspose-words-gists" "d55d8631947d283b1f0da99afa06c492" "cpp-Programming-Documents-Document-DocumentBuilderInsertTCFieldsAtText-DocumentBuilderInsertTCFieldsAtText.cpp" >}}

{{< gist "aspose-words-gists" "d55d8631947d283b1f0da99afa06c492" "cpp-Programming-Documents-Document-DocumentBuilderInsertTCFieldsAtText-InsertTCFieldHandler.cpp" >}}

### שנה תוכן עניינים

#### שנה את העיצוב של סגנונות

עיצוב הערכים ב `TOC` אינו משתמש בסגנונות המקוריים של הערכים המסומנים, במקום זאת, כל רמה מעוצבת בסגנון `TOC` שווה ערך. לדוגמה, הרמה הראשונה ב - `TOC` מעוצבת בסגנון **TOC1**, הרמה השנייה מעוצבת בסגנון **TOC2** וכן הלאה. המשמעות היא שכדי לשנות את המראה של `TOC` יש לשנות סגנונות אלה. ב Aspose.Words סגנונות אלה מיוצגים על ידי המיקום העצמאי `StyleIdentifier.TOC1` עד `StyleIdentifier.TOC9` וניתן לאחזר אותם מהאוסף `Document.Styles` באמצעות מזהים אלה. ברגע שהסגנון המתאים של המסמך הוחזר, ניתן לשנות את העיצוב של הסגנון הזה. כל שינוי בסגנונות אלה יבוא לידי ביטוי באופן אוטומטי ב TOCs במסמך. הדוגמהlow code משנה מאפיין עיצוב המשמש ברמה הראשונה `TOC` סִגְנוֹן.

{{< gist "aspose-words-gists" "d55d8631947d283b1f0da99afa06c492" "cpp-Programming-Documents-Styles-ChangeStyleOfTOCLevel-ChangeStyleOfTOCLevel.cpp" >}}

כדאי גם לציין שכל עיצוב ישיר של פסקה (המוגדר בפסקה עצמה ולא בסגנון) המסומן להיכלל `TOC` יועתק בערך ב TOC. לדוגמה, אם הסגנון Heading 1 משמש לסימון תוכן עבור `TOC` ולסגנון זה יש עיצוב מודגש ואילו לפסקה יש גם עיצוב נטוי שהוחל עליו ישירות. הערך `TOC` שהתקבל לא יהיה מודגש מכיוון שהוא חלק מעיצוב הסגנון אולם הוא יהיה נטוי מכיוון שהוא מעוצב ישירות בפסקה. ניתן גם לשלוט בעיצוב המפרידים המשמשים בין כל ערך למספר העמוד. כברירת מחדל, זהו קו מקווקו המופץ למספור העמודים באמצעות תו כרטיסייה ותחנת כרטיסייה ימנית בשורה קרוב לשוליים הימניים.

באמצעות הכיתה `Style` שאוחזרה עבור הרמה `TOC` הספציפית שברצונך לשנות, תוכל גם לשנות את אופן הופעתן במסמך. כדי לשנות את האופן שבו זה מופיע ראשית `Style.ParagraphFormat` יש לקרוא כדי לאחזר את עיצוב הפסקה עבור הסגנון. מכאן ניתן לאחזר את עצירות הלשונית על ידי קריאה `ParagraphFormat.TabStops` ושינוי עצירת הלשונית המתאימה. באמצעות אותה טכניקה ניתן להזיז או להסיר את הכרטיסייה עצמה לחלוטין. הדוגמה להיותlow code מראה כיצד לשנות את המיקום של הכרטיסייה הימנית עצור ב `TOC` פסקאות קשורות. אתה יכול להוריד את קובץ התבנית של דוגמה זו מכאן.

{{< gist "aspose-words-gists" "d55d8631947d283b1f0da99afa06c492" "cpp-Programming-Documents-Styles-ChangeTOCTabStops-ChangeTOCTabStops.cpp" >}}

### הסרת תוכן עניינים מהמסמך

ניתן להסיר תוכן עניינים מהמסמך על ידי הסרת כל הצמתים שנמצאו בין הצומת `FieldStart` ו - FieldEnd של השדה `TOC`. הקוד שלהלן מדגים זאת. הסרת השדה `TOC` פשוטה יותר משדה רגיל מכיוון שאיננו עוקבים אחר שדות מקוננים. במקום זאת, אנו בודקים שהצומת `FieldEnd` היא מסוג `FieldType.FieldTOC` מה שאומר שנתקלנו בקצה הזרם TOC. ניתן להשתמש בטכניקה זו במקרה זה מבלי לדאוג לשדות מקוננים, שכן אנו יכולים להניח שלכל מסמך שנוצר כראוי לא יהיה שדה מקונן מלא `TOC` בתוך שדה אחר `TOC`. ראשית, הצמתים `FieldStart` של כל `TOC` נאספים ומאוחסנים. לאחר מכן מונה את `TOC` שצוין כך שכל הצמתים בשדה מבקרים ומאוחסנים. הצמתים מוסרים לאחר מכן מהמסמך. הדוגמהlow code מדגימה כיצד להסיר `TOC` שצוין ממסמך. אתה יכול להוריד את קובץ התבנית של דוגמה זו מכאן.

{{< gist "aspose-words-gists" "d55d8631947d283b1f0da99afa06c492" "cpp-Programming-Documents-Document-RemoveTOCFromDocument-RemoveTOCFromDocument.cpp" >}}

## הכנס סגנון מפריד לשים שונה סעיף סגנונות

ניתן להוסיף את מפריד הסגנונות לסוף פסקה באמצעות קיצור המקשים + אלט + הזן MS Word. תכונה זו מאפשרת שני סגנונות פסקה שונים המשמשים בפסקה מודפסת לוגית אחת. אם אתה רוצה טקסט כלשהו מתחילת כותרת מסוימת שיופיע בתוכן עניינים אך אינך רוצה שהכותרת כולה בתוכן העניינים, תוכל להשתמש בתכונה זו. הדוגמהlow code מראה כיצד להוסיף מפריד סגנונות כדי לשים סגנונות פסקה שונים.

{{< gist "aspose-words-gists" "d55d8631947d283b1f0da99afa06c492" "cpp-Programming-Documents-Styles-InsertStyleSeparator-ParagraphInsertStyleSeparator.cpp" >}}

## העתק את כל הסגנונות מתבנית

ישנם מקרים שבהם ברצונך להעתיק את כל הסגנונות ממסמך אחד למשנהו. ניתן להשתמש בשיטת `Document.CopyStylesFromTemplate` כדי להעתיק סגנונות מהתבנית שצוינה למסמך. כאשר סגנונות מועתקים מתבנית למסמך, סגנונות בעלי שמות דומים במסמך מוגדרים מחדש כך שיתאימו לתיאורי הסגנון בתבנית. סגנונות ייחודיים מהתבנית מועתקים למסמך. סגנונות ייחודיים במסמך נשארים שלמים. הדוגמהlow code מראה כיצד להעתיק סגנונות ממסמך אחד למסמך אחר.

{{< gist "aspose-words-gists" "d55d8631947d283b1f0da99afa06c492" "cpp-Programming-Documents-Styles-CopyStyles-CopyStylesFromDocument.cpp" >}}
