Робота з стильами та темами
Про нас StyleCollection клас використовується для управління вбудованими та застосувати користувацькі налаштування до стилів.
Стиль доступу
Ви можете отримати колекцію стилів, визначених у документі за допомогою Document.Styles майно. Ця колекція має як вбудовані, так і призначені для користувача стилі в документі. Особливий стиль можна отримати за допомогою свого імені / псевдоніма, ідентифікатора стилю або індексу. Приклад коду показує, як отримати доступ до колекції стилів, визначених у документі.
// For complete examples and data files, please go to https://github.com/aspose-words/Aspose.Words-for-.NET | |
// The path to the documents directory. | |
string dataDir = RunExamples.GetDataDir_WorkingWithDocument(); | |
// Load the template document. | |
Document doc = new Document(dataDir + "TestFile.doc"); | |
// Get styles collection from document. | |
StyleCollection styles = doc.Styles; | |
string styleName = ""; | |
// Iterate through all the styles. | |
foreach (Style style in styles) | |
{ | |
if (styleName == "") | |
{ | |
styleName = style.Name; | |
} | |
else | |
{ | |
styleName = styleName + ", " + style.Name; | |
} | |
} |
Як витягувати контент на основі стилів
На простому рівні, що перерозподіляє вміст на основі стилів з документа Word, може бути корисним для ідентифікації, списку та підрахунку абзаців і рядків тексту, відформатованих певним стилем. Наприклад, для визначення окремих видів контенту в документі, таких як приклади, заголовки, посилання, ключові слова, імена фігур та приклади.
Для того, щоб зробити це кілька кроків далі, це також може бути використаний для важелювання структури документа, визначених стилях він використовує, для повторного використання документа для іншого виходу, наприклад HTML. Це насправді, як будується документація Aspose, що надходить Aspose.Words до тесту. Інструмент вбудований за допомогою Aspose.Words введіть документи Word і розбиває їх на теми на певних рівнях заголовка. Файл XML виробляється за допомогою Aspose.Words що використовується для побудови навігаційної деревини, ви можете побачити зліва. А потім Aspose.Words перетворює кожну тему в HTML.
Розчин для перерозподілу тексту, відформатований певними стилями в документі Word, як правило, економічним і прямим Aspose.Wordsй
Рішення
Ілюструвати, як легко Aspose.Words ручка ретривування контенту на основі стилів, розглянемо приклад. У цьому прикладі ми будемо отримувати текстові форматування з певним стилем абзацу та стилем персонажа з зразка документа Word. На високому рівні це буде залучено:# Відкриття документа Word за допомогою Document клас.# Отримання зібрань всіх абзаців і всіх проходжень у документі.# Вибравши тільки потрібні абзаци і проходи. Зокрема, ми отримаємо текст, відформатований за допомогою пункту “Налаштування 1” та стилю “Intense Emphasis” з цього зразка документа Word.
У цьому документі про зразок текст відформатований за допомогою пункту “Налаштування 1” є “Вставити вкладку”, “Швидкі стилі” та “Theme”, а текст відформатований стилем “Інтенсивний акцент” – це кілька екземплярів синього, ініціалізованого, сміливого тексту, таких як “галереї” та “загальний погляд”.
Код
Реалізація стильного запиту досить проста в Aspose.Words Модель об’єкта документа, як це просто використовує інструменти, які вже знаходяться в місці. Для цього рішення реалізуються два способи: ParagraphsByStyleName до Цей метод отримує масив тих абзаців у документі, який має певну назву стилю. Нема RunsByStyleName до Цей метод отримує масив тих, хто працює в документі, який має певну назву стилю. Обидва ці методи є дуже схожими, єдиними відмінностями є типи вузлів і представлення інформації стилю в абзаци і запускати вершини. Тут здійснюється реалізація абзаців ByStyleName: Нижче наведено всі абзаци, відформатовані за вказаним стилем.
// For complete examples and data files, please go to https://github.com/aspose-words/Aspose.Words-for-.NET | |
public static ArrayList ParagraphsByStyleName(Document doc, string styleName) | |
{ | |
// Create an array to collect paragraphs of the specified style. | |
ArrayList paragraphsWithStyle = new ArrayList(); | |
// Get all paragraphs from the document. | |
NodeCollection paragraphs = doc.GetChildNodes(NodeType.Paragraph, true); | |
// Look through all paragraphs to find those with the specified style. | |
foreach (Paragraph paragraph in paragraphs) | |
{ | |
if (paragraph.ParagraphFormat.Style.Name == styleName) | |
paragraphsWithStyle.Add(paragraph); | |
} | |
return paragraphsWithStyle; | |
} |
Ця реалізація також використовує Document.GetChildNodes
метод методу Document
клас, який повертає колекцію всіх вузлів з вказаним типом, що в цьому випадку в усіх пунктах.
Примітка, що другий параметр другого параметра Document.GetChildNodes метод встановлюється до trueй Це змушує Document.GetChildNodes метод вибору з усіх вузлів дитини, що рекурсивно рекурсивно, а не вибору безпосередньої дитини.
Крім того, варто відзначити, що збір абзаців не створює безпосередній наклад, оскільки абзаци завантажуються в цю колекцію лише тоді, коли ви маєте доступ до них. Потім все, що потрібно зробити, щоб перейти через збірку, використовуючи стандарт длявчителя оператора і додати абзаци, які мають вказаний стиль на абзаци Стильовий масив. Про нас Paragraph
Назва стилю можна знайти в Style.Name майно майна Paragraph.ParagraphFormat об’єкт. Реалізація RunsByStyleName практично однакова, хоча ми, очевидно, використовуємо NodeType.Run для отримання вузла запуску. Про нас Font.Style нерухомість Run об’єкт використовується для доступу до інформації про стиль Run вершини. Нижче наведено приклад пошуку всіх трас, відформатованих за допомогою вказаного стилю.
// For complete examples and data files, please go to https://github.com/aspose-words/Aspose.Words-for-.NET | |
public static ArrayList RunsByStyleName(Document doc, string styleName) | |
{ | |
// Create an array to collect runs of the specified style. | |
ArrayList runsWithStyle = new ArrayList(); | |
// Get all runs from the document. | |
NodeCollection runs = doc.GetChildNodes(NodeType.Run, true); | |
// Look through all runs to find those with the specified style. | |
foreach (Run run in runs) | |
{ | |
if (run.Font.Style.Name == styleName) | |
runsWithStyle.Add(run); | |
} | |
return runsWithStyle; | |
} |
Коли обидві запити реалізовані, все, що вам потрібно зробити, щоб передати об’єкт документа і вказати назви стилю, які ви хочете отримати: Нижче наведено запити та результати відображення. Ви можете завантажити файл шаблону цього прикладу з Головнай
// For complete examples and data files, please go to https://github.com/aspose-words/Aspose.Words-for-.NET | |
// The path to the documents directory. | |
string dataDir = RunExamples.GetDataDir_WorkingWithStyles(); | |
string fileName = "TestFile.doc"; | |
// Open the document. | |
Document doc = new Document(dataDir + fileName); | |
// Define style names as they are specified in the Word document. | |
const string paraStyle = "Heading 1"; | |
const string runStyle = "Intense Emphasis"; | |
// Collect paragraphs with defined styles. | |
// Show the number of collected paragraphs and display the text of this paragraphs. | |
ArrayList paragraphs = ParagraphsByStyleName(doc, paraStyle); | |
Console.WriteLine(string.Format("Paragraphs with \"{0}\" styles ({1}):", paraStyle, paragraphs.Count)); | |
foreach (Paragraph paragraph in paragraphs) | |
Console.Write(paragraph.ToString(SaveFormat.Text)); | |
// Collect runs with defined styles. | |
// Show the number of collected runs and display the text of this runs. | |
ArrayList runs = RunsByStyleName(doc, runStyle); | |
Console.WriteLine(string.Format("\nRuns with \"{0}\" styles ({1}):", runStyle, runs.Count)); | |
foreach (Run run in runs) | |
Console.WriteLine(run.Range.Text); |
Кінець Результат
Коли все зроблено, запустити зразок буде відображати наступний вихід:
Як ви можете побачити, це дуже простий приклад, показує кількість і текст зібраних абзаців і працює в інструкції документ Word.
Скопіювати всі стилі з шаблону
Якщо ви хочете копіювати всі стилі з одного документа в інший. Ви можете використовувати Document.CopyStylesFromTemplate
метод копіювання стилів з вказаного шаблону до документа. Коли стилі скопійовані з шаблону до документа, такі як названі стилі в документі перевизнаються, щоб відповідати описам стилів в шаблоні. Унікальні стилі з шаблону копіюються до документа. Унікальні стилі в документі залишаються незмінними. Початиlow code Приклад показує, як копіювати стилі з одного документа в інший.
// For complete examples and data files, please go to https://github.com/aspose-words/Aspose.Words-for-.NET | |
string fileName = dataDir + "template.docx"; | |
Document doc = new Document(fileName); | |
// Open the document. | |
Document target = new Document(dataDir + "TestFile.doc"); | |
target.CopyStylesFromTemplate(doc); | |
dataDir = dataDir + RunExamples.GetOutputFilePath(fileName); | |
doc.Save(dataDir); |
Як маніпулювати Тематичні властивості
Ми додали основні API в Aspose.Words доступу до властивостей теми документів. Зараз це API включає в себе наступні об’єкти:
- до Головна
- ТемиФонтс
- Теми
Ось як можна отримати тематичні властивості:
// For complete examples and data files, please go to https://github.com/aspose-words/Aspose.Words-for-.NET | |
Document doc = new Document(dataDir); | |
Theme theme = doc.Theme; | |
// Major (Headings) font for Latin characters. | |
Console.WriteLine(theme.MajorFonts.Latin); | |
// Minor (Body) font for EastAsian characters. | |
Console.WriteLine(theme.MinorFonts.EastAsian); | |
// Color for theme color Accent 1. | |
Console.WriteLine(theme.Colors.Accent1); |
І ось як можна встановити тематичні властивості:
// For complete examples and data files, please go to https://github.com/aspose-words/Aspose.Words-for-.NET | |
Document doc = new Document(dataDir); | |
Theme theme = doc.Theme; | |
// Set Times New Roman font as Body theme font for Latin Character. | |
theme.MinorFonts.Latin = "Times New Roman"; | |
// Set Color.Gold for theme color Hyperlink. | |
theme.Colors.Hyperlink = Color.Gold; |