Práce se styly a motivy

StyleCollection třída se používá pro správu vestavěných a aplikaci uživatelsky definovaných nastavení na styly.

Přístup k stylům

Můžete získat soubor stylů definovaných v dokumentu pomocí Document.styles majetek. Tato kolekce obsahuje jak vestavěný, tak uživatelsky definovaný styl v dokumentu. Zvláštní styl by mohl být získán jeho názvem/aliasem, identifikátorem stylu nebo indexem. Následující příklad kódu ukazuje, jak získat přístup ke sběru stylů definovaných v dokumentu.

# 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)

Jak extrahovat obsah na základě stylů

Na jednoduché úrovni, získávání obsahu na základě stylů z dokumentu Word může být užitečné pro identifikaci, seznam a počítání odstavců a běží textu formátovaný s konkrétním stylem. Můžete například potřebovat určit konkrétní druhy obsahu v dokumentu, jako jsou příklady, názvy, reference, klíčová slova, jména postav a případové studie.

K tomu, aby to bylo o několik kroků dále, lze tento dokument využít také k využití struktury dokumentu definované styly, které používá, k opětovnému použití dokumentu pro jiný výstup, jako je HTML. Takhle se vlastně vytváří dokumentace Aspose, Aspose.Words do testu. Nástroj postavený pomocí Aspose.Words bere zdroj Word dokumenty a rozděluje je na témata na určité úrovni okruhu. XML soubor se vyrábí pomocí Aspose.Words který se používá ke stavbě navigačního stromu, který můžete vidět vlevo. A pak Aspose.Words převádí každé téma do HTML.

Řešení pro získávání textu formátovaného určitými styly v dokumentu Word je typicky ekonomické a jednoduché použití Aspose.Words.

Řešení

Znázornit, jak snadno Aspose.Words zpracovává získávání obsahu na základě stylů, nechť se podívá na příklad. V tomto příkladu se chystáme získat text formátovaný s konkrétním odst. stylu a charakter stylu ze vzorku Word dokumentu. Na vysoké úrovni to bude zahrnovat:

  • Otevření dokumentu Word pomocí Document třída.
  • Získávám sbírky všech odstavců a všechny běží v dokumentu.
  • Výběr pouze požadovaných bodů a běží. Konkrétně získáme text formátovaný s paragrafem

working-with-styles-and-themes-aspose-words-net

V tomto vzorkovacím dokumentu je text formátovaný podle odst. 1 písm. a) a odst. 1 písm. a) a písm. a) a b) písm. b) písm. b) písm. b) písm. b) písm. b) písm. c) písm. c) písm. c) písm. c) písm. c) a c) písm. c) písm. c) a d) písm. e) písm. e) písm. e) písm. e).

Kód

Implementace stylového dotazu je poměrně jednoduchá v Aspose.Words model objektu dokumentu, protože prostě používá nástroje, které jsou již na místě. Pro toto řešení jsou zavedeny dvě třídní metody:

  • odstavce_by_style_name - Co? Tato metoda získává pole těchto odstavců v dokumentu, které mají specifický název stylu.
  • runs_by_style_name - Co? Tato metoda získává řadu těch, které běží v dokumentu, který má specifický název stylu. Obě tyto metody jsou velmi podobné, jedinými rozdíly jsou typy uzlů a zastoupení stylových informací v odstavci a spustit uzly. Zde je implementace paragraphs_by_style_name: Níže naleznete příklad všechny odstavce formátované podle zadaného stylu.
# 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

Stojí také za zmínku, že sbírka odstavců nevytváří bezprostřední režijní náklady, protože odstavce jsou do této sbírky vloženy pouze tehdy, když se k nim dostanete. Pak vše, co musíte udělat, je projít sbírku pomocí normy pro každého operátora a přidat odstavce, které mají zadaný styl do pole odstavce_with_style. • Paragraph název stylu naleznete v Style.name majetek Paragraph.paragraph_format objekt. Provádění runs_by_style_name je téměř stejný, i když my jsme samozřejmě používat NodeType.RUN pro získání spuštěných uzlů. • Font.style vlastnictví a Run objekt se používá pro přístup ke stylovým informacím v Run uzly. Níže najdete všechny runy formátované zadaným stylem.

# 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

Při realizaci obou dotazů stačí předat objekt dokumentu a zadat názvy stylu obsahu, který chcete získat: Níže spusťte dotazy a výsledky zobrazení. Můžete si stáhnout soubor šablony tohoto příkladu z Tady.

# 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)

Konečný výsledek

Až bude všechno hotovo, spustí se vzorek zobrazí následující výstup:

styles-and-themes-aspose-words-net

Jak můžete vidět, je to velmi jednoduchý příklad, zobrazující číslo a text shromážděných odstavců a běží ve vzorku Word dokumentu.

Kopírovat všechny styly ze šablony

Existují případy, kdy chcete zkopírovat všechny styly z jednoho dokumentu do druhého. Můžete použít Document.copy_styles_from_template způsob kopírování stylů od zadané šablony k dokumentu. Když jsou styly zkopírovány ze šablony do dokumentu, podobně pojmenované styly v dokumentu jsou definovány tak, aby odpovídaly stylu popisů v šabloně. Jedinečné styly ze šablony jsou kopírovány do dokumentu. Jedinečné styly v dokumentu zůstávají neporušené. Below code příklad ukazuje, jak kopírovat styly z jednoho dokumentu do druhého.

# 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")

Jak manipulovat Vlastnosti motivu

Přidali jsme základní API tro Aspose.Words přístup k tématickým vlastnostem dokumentu. Prozatím tohle API zahrnuje tyto veřejné objekty:

Zde je způsob, jak můžete získat vlastnosti motivu:

# 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)

A tady je, jak si můžete nastavit vlastnosti motivu:

# 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