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-.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;
}
}

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ání sbírek všech odstavců a všech běží v dokumentu.# Výběr pouze požadovaných odstavců 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 implementovány dvě třídní metody: ParagraphsByStyleName - Co? Tato metoda získává pole těchto odstavců v dokumentu, které mají specifický název stylu. RunsByStyleName - 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 provádění odstavců ByStyleName: Níže najdete všechny odstavce formátované zadaným stylem.

// 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;
}

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í uvedený styl k odstavcům Se stylovým polem. • Paragraph název stylu naleznete v Style.Name majetek Paragraph.ParagraphFormat objekt. Implementace RunsByStyleName je téměř stejná, i když samozřejmě používáme 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-.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;
}

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-.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);

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.CopyStylesFromTemplate 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-.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);

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:

  • Motiv
  • ThemeFonts
  • ThemeColors

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-.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);

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-.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;