スタイルとテーマの操作

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 文書を取得し、特定の見出しレベルでトピックに分割します。 XML ファイルは、左側に表示されているナビゲーション ツリーの構築に使用される Aspose.Words を使用して生成されます。そして、Aspose.Words は各トピックを HTML に変換します。

Word 文書内の特定のスタイルで書式設定されたテキストを取得するソリューションは、通常、Aspose.Words を使用すると経済的で簡単です。

ソリューション

Aspose.Words がスタイルに基づいてコンテンツの取得をどのように簡単に処理するかを説明するために、例を見てみましょう。この例では、サンプル Word 文書から特定の段落スタイルと文字スタイルで書式設定されたテキストを取得します。大まかに言うと、これには以下が含まれます。

  • Document クラスを使用して Word 文書を開きます。
  • ドキュメント内のすべての段落とすべてのランのコレクションを取得します。
  • 必要な段落とランのみを選択します。具体的には、このサンプル Word 文書から、「見出し 1」段落スタイルと「強強調」文字スタイルで書式設定されたテキストを取得します。

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

このサンプル文書では、「見出し 1」段落スタイルで書式設定されたテキストは「タブの挿入」、「クイック スタイル」、および「テーマ」であり、「強調」文字スタイルで書式設定されたテキストは青のいくつかのインスタンスです。 「ギャラリー」や「全体的な外観」などの斜体の太字のテキスト。

コード

Aspose.Words ドキュメント オブジェクト モデルでは、既に存在するツールを使用するだけなので、スタイルベースのクエリの実装は非常に簡単です。このソリューションには 2 つのクラス メソッドが実装されています。

  • 段落ごとのスタイル名 – このメソッドは、ドキュメント内の特定のスタイル名を持つ段落の配列を取得します。
  • runs_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

段落コレクション内の項目にアクセスした場合にのみ段落がこのコレクションに読み込まれるため、段落コレクションによって直ちにオーバーヘッドが発生するわけではないことも指摘しておく価値があります。次に、標準の foreach 演算子を使用してコレクションを調べ、指定されたスタイルを持つ段落を段落_with_style 配列に追加するだけです。 Paragraph スタイル名は、Paragraph.paragraph_format オブジェクトの Style.name プロパティで確認できます。 runs_by_style_name の実装はほぼ同じですが、実行ノードの取得には明らかに NodeType.RUN を使用しています。 Run オブジェクトの Font.style プロパティは、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)

最終結果

すべてが完了したら、サンプルを実行すると次の出力が表示されます。

styles-and-themes-aspose-words-net

ご覧のとおり、これは非常に単純な例であり、サンプル Word 文書内で収集された段落と実行の数とテキストを示しています。

テンプレートからすべてのスタイルをコピー

すべてのスタイルをあるドキュメントから別のドキュメントにコピーしたい場合があります。 Document.copy_styles_from_template メソッドを使用して、指定したテンプレートからドキュメントにスタイルをコピーできます。スタイルがテンプレートからドキュメントにコピーされると、ドキュメント内の同じ名前のスタイルが、テンプレート内のスタイルの説明と一致するように再定義されます。テンプレートの固有のスタイルがドキュメントにコピーされます。ドキュメント内の固有のスタイルはそのまま残ります。 Below 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