Работа със стилове и теми
На StyleCollection класът се използва за управление на вградени и прилагане на потребителски настройки в стилове.
Достъп до стилове
Можете да получите колекция от стилове определени в документа с помощта на Document.styles собственост. Тази колекция съдържа както вградени, така и потребителски стилове в документ. Може да се получи определен стил с името/името, идентификатора на стила или индекса. Следният пример за код показва как да получите достъп до колекцията от стилове, определени в документа.
# For complete examples and data files, please go to https://github.com/aspose-words/Aspose.Words-for-Python-via-.NET | |
doc = aw.Document() | |
styleName = "" | |
# Get styles collection from the document. | |
styles = doc.styles | |
for style in styles : | |
if (styleName == "") : | |
styleName = style.name | |
print(styleName) | |
else : | |
styleName = styleName + ", " + style.name | |
print(styleName) | |
Как да извлечете съдържание въз основа на стилове
На просто ниво, извличането на съдържанието въз основа на стилове от документ на Word може да бъде полезно за идентифициране, изброяване и преброяване на абзаци и редове на текст, форматирани със специфичен стил. Например, може да се наложи да се идентифицират определени видове съдържание в документа, като например примери, заглавия, препратки, ключови думи, фигури имена, и казуси изследвания.
За да направите това няколко стъпки по-нататък, това може да се използва и за използване на структурата на документа, дефиниран от стиловете, които използва, за да пренасочи документа към друг изход, като HTML. Това е всъщност начина, по който се изгражда документацията Aspose, поставяйки Aspose.Words на теста. Инструмент, построен с помощта на Aspose.Words взема документите на източника Word и ги разделя на теми на определени нива на заглавие. Name Aspose.Words която се използва за изграждане на навигационното дърво, което можете да видите вляво. И тогава… Aspose.Words превръща всяка тема в HTML.
Решението за извличане на текст, форматиран със специфични стилове в документ на Word, обикновено е икономично и лесно използване Aspose.Words.
Решението
За да илюстрирам колко лесно Aspose.Words дръжки Retrieving съдържание въз основа на стилове, нека да разгледаме един пример. В този пример ние ще изтеглим текст, обозначен с определен стил на параграфа и стил на характера от примерен документ на Word. На високо ниво това ще включва:
- Отваряне на Word документ с помощта на Document Клас.
- Получаване на колекции от всички параграфи и всички работи в документа.
- Избирам само необходимите точки и бягам. По-точно, ние ще набавим текст, на който се нареждат с настоящето 1. .. ..
В този примерен документ, текстът, на който се нарежда стилът на нареждане на 1 и т.н., е в стила на “Инсерт” (Insert) и “Quick Styles” (Quick Styles) и “Theme” (Theme) и текстът, обозначен с “Интензивен акцент” стилът на характера е няколко случая на синьо, италицизирано, смел текст, като например галерии (galleries) и “overall person.”
Код
Изпълнението на един стил-базиран заявка е доста проста в Aspose.Words документ обект модел, тъй като тя просто използва инструменти, които вече са в сила. За това решение се прилагат два метода от клас:
- параграфи_by_style_name - Да. Този метод извлича масив от тези параграфи в документа, който има специфично име на стила.
- rows_by_style_name - Да. Този метод извлича масив от тези работи в документа, който има специфично име стил. И двата метода са много сходни, единствените разлики са типовете възли и представянето на информацията за стила в рамките на параграфа и се движат възли. Ето и прилагането на
paragraphs_by_style_name
: По-долу се намират всички параграфи, представени в посочения стил.
# For complete examples and data files, please go to https://github.com/aspose-words/Aspose.Words-for-Python-via-.NET | |
@staticmethod | |
def paragraphs_by_style_name(doc : aw.Document, styleName : str) : | |
paragraphsWithStyle = [] | |
paragraphs = doc.get_child_nodes(aw.NodeType.PARAGRAPH, True) | |
for paragraph in paragraphs : | |
paragraph = paragraph.as_paragraph() | |
if (paragraph.paragraph_format.style.name == styleName) : | |
paragraphsWithStyle.append(paragraph) | |
return paragraphsWithStyle | |
Това изпълнение също използва Document.get_child_nodes метод на Document клас, който връща колекция от всички възли с посочения тип, който в този случай във всички параграфи.
Имайте предвид, че вторият параметър на Document.get_child_nodes метод е настроен на True
. Това принуждава Document.get_child_nodes метод да изберете от всички детски възли рекурсивно, вместо да избирате само непосредствените деца.
Също така си струва да се отбележи, че събирането на точки не създава непосредствени режийни разходи, тъй като параграфи са натоварени в тази колекция само когато имате достъп до елементи в тях. След това, всичко, което трябва да направите, е да преминете през колекцията, като използвате стандарта за всеки оператор и добавите параграфи, които имат посочения стил към абзаците_с_стил масив. На Paragraph
име на стила можете да намерите в Style.name собственост на Paragraph.paragraph_format Възразявам. Изпълнение на rows_by_style_name е почти същото, въпреки че очевидно използваме NodeType.RUN за да си върнем възлите. На Font.style собственост на a Run обект се използва за достъп до информация стил в Run Възли. По-долу се намират всички програми, форматирани с посочения стил.
# For complete examples and data files, please go to https://github.com/aspose-words/Aspose.Words-for-Python-via-.NET | |
@staticmethod | |
def runs_by_style_name(doc : aw.Document, styleName : str) : | |
runsWithStyle = [] | |
runs = doc.get_child_nodes(aw.NodeType.RUN, True) | |
for run in runs : | |
run = run.as_run() | |
if (run.font.style.name == styleName) : | |
runsWithStyle.append(run) | |
return runsWithStyle | |
Когато и двете заявки се изпълняват, всичко, което трябва да направите, е да преминете към обект документ и да уточните имената на стила на съдържанието, което искате да изтеглите: По-долу например стартирайте запитвания и показвайте резултатите. Можете да изтеглите шаблонния файл на този пример от Тук.
# For complete examples and data files, please go to https://github.com/aspose-words/Aspose.Words-for-Python-via-.NET | |
doc = aw.Document(docs_base.my_dir + "Styles.docx") | |
paraStyle = "Heading 1" | |
runStyle = "Intense Emphasis" | |
paragraphs = ExtractContent.paragraphs_by_style_name(doc, paraStyle) | |
print(f"Paragraphs with \"{paraStyle}\" styles ({len(paragraphs)}):") | |
for paragraph in paragraphs : | |
print(paragraph.to_string(aw.SaveFormat.TEXT)) | |
runs = ExtractContent.runs_by_style_name(doc, runStyle) | |
print(f"\nRuns with \"{runStyle}\" styles ({len(runs)}):") | |
for run in runs : | |
print(run.range.text) |
Крайен резултат
Когато всичко е готово, стартирането на пробата ще покаже следния изход:
Както можете да видите, това е много прост пример, който показва номера и текста на събраните точки и работи в образеца Word документ.
Копиране на всички стилове от шаблона
Има случаи, когато искате да копирате всички стилове от един документ в друг. Можеш да използваш Document.copy_styles_from_template метод за копиране на стилове от посочения шаблон в документ. Когато стиловете се копират от шаблон към документ, подобни стилове в документа се променят, за да съответстват на описанието на стила в шаблона. Уникалните стилове от шаблона се копират в документа. Уникалните стилове в документа остават непокътнати. Бъдиlow code пример показва как да копирате стилове от един документ в друг.
# For complete examples and data files, please go to https://github.com/aspose-words/Aspose.Words-for-Python-via-.NET | |
doc = aw.Document() | |
target = aw.Document(docs_base.my_dir + "Rendering.docx") | |
target.copy_styles_from_template(doc) | |
doc.save(docs_base.artifacts_dir + "WorkingWithStylesAndThemes.copy_styles.docx") |
Как да манипулирате Настройки на темата
Ние добавихме основни API в Aspose.Words достъп до свойствата на темата на документа. За сега, това API включва следните обществени обекти:
Ето как можете да получите тематични свойства:
# For complete examples and data files, please go to https://github.com/aspose-words/Aspose.Words-for-Python-via-.NET | |
doc = aw.Document() | |
theme = doc.theme | |
print(theme.major_fonts.latin) | |
print(theme.minor_fonts.east_asian) | |
print(theme.colors.accent1) |
И ето как можете да зададете тема свойства:
# For complete examples and data files, please go to https://github.com/aspose-words/Aspose.Words-for-Python-via-.NET | |
doc = aw.Document() | |
theme = doc.theme | |
theme.minor_fonts.latin = "Times New Roman" | |
theme.colors.hyperlink = drawing.Color.gold |