チュートリアル

簡単にライブラリーを使用するためのチュートリアルコレクション

チュートリアル»docpythondocumentoperation

Displaying items by tag: docpythondocumentoperation

PythonでWord文書を作成するチュートリアル

Python アプリケーションにおいて、Word 文書をプログラムで生成することは非常に一般的な要件です。
レポート、請求書、契約書、監査ログ、エクスポートされたデータセットなどは、単なるテキストや PDF ではなく、編集可能な .docx ファイルとして提供されることが多くあります。

プレーンテキストとは異なり、Word 文書は 構造化ドキュメント です。
セクション、段落、スタイル、レイアウト規則といった要素で構成されており、.docx ファイルを単なる文字列コンテナとして扱うと、レイアウト崩れや保守性の低下を招きます。

本チュートリアルでは、Spire.Doc for Python を使用し、実践的な Word 文書作成方法 を解説します。
Word 本来のドキュメントオブジェクトモデルに沿って文書を構築し、正しい構造レベルで書式を適用することで、コンテンツが増えても安定して編集可能な .docx ファイルを生成する方法を紹介します。

コンテンツ一覧

1. Python における Word 文書構造の理解

コードを書き始める前に、Word 文書が内部的にどのような構造を持っているかを理解することが重要です。

.docx ファイルは単なるテキストの連続ではありません。
以下のような複数のオブジェクト階層で構成されています。

  • Document – 文書全体を管理するルートコンテナ
  • Section – ページサイズ、余白、向きなどのページレイアウトを定義
  • Paragraph – 論理的なテキストブロック
  • Run(TextRange) – 文字書式を持つインラインテキスト
  • Style – 段落やテキストに適用可能な再利用可能な書式定義

Python で Word 文書を作成する際は、この階層構造を コード上で明示的に構築 することになります。
書式やレイアウトは、適切な階層レベルで設定した場合にのみ、予測通りに動作します。

Spire.Doc for Python は、これらの要素に対応する抽象化を提供しており、Word 自体の構造に非常に近い形で文書を操作できます。

2. Python で基本的な Word 文書を作成する

このセクションでは、Spire.Doc を使用して Python から有効な Word 文書を生成する方法を紹介します。
正しい文書構造と基本的な処理フローに焦点を当てます。

Spire.Doc for Python のインストール

pip install spire.doc

または、Spire.Doc for Python をダウンロード して手動で組み込むことも可能です。

シンプルな .docx ファイルの作成

from spire.doc import Document, FileFormat

# 文書オブジェクトを作成
document = Document()

# セクションを追加(ページレイアウトを定義)
section = document.AddSection()

# 段落を追加
paragraph = section.AddParagraph()
paragraph.AppendText(
    "この文書は Python によって生成されました。"
    "Spire.Doc を使用した基本的な Word 文書作成の例です。"
)

# 文書を保存
document.SaveToFile("basic_document.docx", FileFormat.Docx)
document.Close()

このコードは、Microsoft Word で正常に開くことができる、最小構成の .docx ファイルを生成します。 文書作成の基本的な流れ(Document → Section → Paragraph → 保存)を示しています。

Pythonで生成した基本的なWord文書

技術的な観点では次の通りです。

  • Document オブジェクトは Word 文書全体の構造と内容を管理します。
  • Section は段落に対するページレイアウトのコンテキストを定義します。
  • Paragraph は表示されるテキストを保持し、段落レベルの書式設定の基本単位となります。

Spire.Doc で生成されるすべての Word 文書は、この構造パターンに基づいており、以降の高度な操作の基盤となります。

3. テキストの追加と書式設定

Word 文書内のテキストは階層的に管理されます。 書式設定は以下の 2 つのレベルで適用できます。

  • 段落レベル:配置、行間、インデントなど
  • 文字レベル:フォント、サイズ、色、太字、斜体など

さらに、スタイル を使用すると、これらの書式設定をまとめて定義し、複数の段落やテキストに再利用できます。 段落書式・文字書式・スタイルの違いを理解することは、Python で Word 文書を作成・編集する上で非常に重要です。

段落の追加と段落書式の設定

Word 文書に表示されるすべてのテキストは、必ず段落を通して追加されます。 段落はテキストとレイアウトのコンテナであり、Paragraph.Format を通じて段落レベルの書式を設定できます。 文字レベルの書式は、TextRange.CharacterFormat を使用して設定します。

from spire.doc import Document, HorizontalAlignment, FileFormat, Color

document = Document()
section = document.AddSection()

# タイトル段落を追加
title = section.AddParagraph()
title.Format.HorizontalAlignment = HorizontalAlignment.Center
title.Format.AfterSpacing = 20
title.Format.BeforeSpacing = 20
title_range = title.AppendText("月次売上レポート")
title_range.CharacterFormat.FontSize = 18
title_range.CharacterFormat.Bold = True
title_range.CharacterFormat.TextColor = Color.get_LightBlue()
title_range.CharacterFormat.FontName = "Yu Gothic UI"

# 本文段落を追加
body = section.AddParagraph()
body.Format.FirstLineIndent = 20
body_range = body.AppendText(
    "本レポートでは、地域別および製品カテゴリ別の売上推移を含む、"
    "月次の販売実績概要を示します。"
    "以下のデータは、経営判断を支援する目的で提供されています。"
)
body_range.CharacterFormat.FontSize = 12
body_range.CharacterFormat.FontName = "Yu Mincho"

# 文書を保存
document.SaveToFile("formatted_paragraph.docx", FileFormat.Docx)
document.Close()

生成された Word 文書のプレビューです。

Pythonで生成した書式付き段落

技術メモ

  • Paragraph.Format:段落全体の配置、余白、インデントを設定
  • AppendText()TextRange を返し、文字レベルの書式設定が可能
  • すべての段落は必ずセクションに属し、段落の順序が読み順とページ分割に影響します

スタイルの作成と適用

スタイルを使用すると、段落レベルおよび文字レベルの書式設定を一度定義し、文書全体で再利用できます。
配置、余白、フォント、強調表現などをスタイルとして管理することで、書式の一貫性が向上し、保守も容易になります。

Word 文書では、カスタムスタイル組み込みスタイル の両方を使用できます。
いずれの場合も、スタイルは適用前に文書へ追加する必要があります。

カスタム段落スタイルの作成と適用

from spire.doc import (
    Document, HorizontalAlignment, BuiltinStyle,
    TextAlignment, ParagraphStyle, FileFormat
)

document = Document()

# カスタム段落スタイルを作成
custom_style = ParagraphStyle(document)
custom_style.Name = "CustomStyle"
custom_style.ParagraphFormat.HorizontalAlignment = HorizontalAlignment.Center
custom_style.ParagraphFormat.TextAlignment = TextAlignment.Auto
custom_style.CharacterFormat.Bold = True
custom_style.CharacterFormat.FontSize = 20

# 組み込みの見出しスタイルを基に継承
custom_style.ApplyBaseStyle(BuiltinStyle.Heading1)

# スタイルを文書に追加
document.Styles.Add(custom_style)

# カスタムスタイルを適用
title_para = document.AddSection().AddParagraph()
title_para.ApplyStyle(custom_style.Name)
title_para.AppendText("地域別パフォーマンス概要")

組み込みスタイルの追加と適用

# 組み込みスタイルを追加
built_in_style = document.AddStyle(BuiltinStyle.Heading2)
document.Styles.Add(built_in_style)

# 組み込みスタイルを適用
heading_para = document.Sections.get_Item(0).AddParagraph()
heading_para.ApplyStyle(built_in_style.Name)
heading_para.AppendText("地域別売上")
    
document.SaveToFile("document_styles.docx", FileFormat.Docx)
document.Dispose()

生成された Word 文書のプレビューです。

カスタムスタイルと組み込みスタイルを適用したWord文書

技術的な解説

  • ParagraphStyle(document) は、文書に紐づく再利用可能なスタイルオブジェクトを作成します
  • ParagraphFormat は配置やテキストフローなど、レイアウト関連の設定を制御します
  • CharacterFormat はフォントサイズや太字など、文字レベルの書式を定義します
  • ApplyBaseStyle() を使用すると、組み込みスタイルの意味的構造や既定動作を継承できます
  • document.Styles に追加することで、すべてのセクションでスタイルを使用可能になります

見出し 2(Heading 2) などの組み込みスタイルを適切に使用することで、アウトライン表示や目次生成など、Word の機能とも高い互換性を保てます。

4. Word 文書への画像挿入

Word のドキュメントモデルでは、画像は段落に属する埋め込みオブジェクトとして扱われます。 段落にアンカーされた画像は、テキストと自然に連動し、コンテンツ変更時にもページ分割や位置関係が自動調整されます。

段落に画像を追加する

from spire.doc import Document, TextWrappingStyle, HorizontalAlignment, FileFormat, ShapeHorizontalAlignment

document = Document()
section = document.AddSection()
section.AddParagraph().AppendText("\r\n\r\n画像サンプル\r\n")

# 画像を挿入
image_para = section.AddParagraph()
image_para.Format.HorizontalAlignment = HorizontalAlignment.Center
image = image_para.AppendPicture("Screen.jpg")

# 文字列の折り返し方法を設定
image.TextWrappingStyle = TextWrappingStyle.Square
# 画像サイズを設定
image.Width = 350
image.Height = 200
# 透明度を設定
image.FillTransparency(0.7)
# 水平方向の配置を設定
image.HorizontalAlignment = ShapeHorizontalAlignment.Center

document.SaveToFile("document_images.docx", FileFormat.Docx)
document.Dispose()

生成された Word 文書のプレビューです。

Pythonで画像を挿入したWord文書

技術的なポイント

  • AppendPicture() は画像を段落内に挿入し、テキストフローの一部として扱います
  • TextWrappingStyle は、画像周囲のテキストの回り込み方法を制御します
  • Width / Height は表示サイズを指定します
  • FillTransparency() は画像の不透明度を設定します
  • HorizontalAlignment により、段落内で画像を中央揃えできます

画像を段落に属させることで、以下の利点があります。

  • 画像サイズ変更時もページ分割が自動調整される
  • テキスト編集時に周囲の文章が正しく再配置される
  • PDF など他形式にエクスポートしても相対位置が維持される

これらの挙動は、Word におけるインライン画像の標準的な動作と一致しています。

より高度な画像操作については、 Python で Word 文書に画像を挿入する方法 を参照してください。

5. 表の作成とデータの入力

表は、レポート、集計結果、比較データなどの構造化情報を表現する際によく使用されます。

内部的には、表は 行・セル・セル内の段落 で構成されています。

Word 文書で表を作成し、書式を設定する

from spire.doc import Document, DefaultTableStyle, FileFormat, AutoFitBehaviorType

document = Document()
section = document.AddSection()
section.AddParagraph().AppendText("\r\n\r\n表のサンプル\r\n")

# 表データを定義
table_headers = ["地域", "製品", "販売数量", "単価(円)", "売上合計(円)"]
table_data = [
    ["北", "ノートPC", 120, 95000, 11400000],
    ["北", "スマートフォン", 300, 50000, 15000000],
    ["南", "ノートPC", 80, 95000, 7600000],
    ["南", "スマートフォン", 200, 50000, 10000000],
    ["東", "ノートPC", 150, 95000, 14250000],
    ["東", "スマートフォン", 250, 50000, 12500000],
    ["西", "ノートPC", 100, 95000, 9500000],
    ["西", "スマートフォン", 220, 50000, 11000000]
]

# セクションに表を追加
table = section.AddTable()
table.ResetCells(len(table_data) + 1, len(table_headers))

# ヘッダー行を設定
for col_index, header in enumerate(table_headers):
    header_range = table.Rows[0].Cells[col_index].AddParagraph().AppendText(header)
    header_range.CharacterFormat.FontSize = 14
    header_range.CharacterFormat.Bold = True
    header_range.CharacterFormat.FontName = "Yu Gothic UI Semibold"


# データ行を設定
for row_index, row_data in enumerate(table_data):
    for col_index, cell_data in enumerate(row_data):
        data_range = table.Rows[row_index + 1].Cells[col_index] \
            .AddParagraph().AppendText(str(cell_data))
        data_range.CharacterFormat.FontSize = 12
        data_range.CharacterFormat.FontName = "Yu Gothic UI"

# 表スタイルを適用し、列幅を自動調整
table.ApplyStyle(DefaultTableStyle.ColorfulListAccent6)
table.AutoFit(AutoFitBehaviorType.AutoFitToContents)

document.SaveToFile("document_tables.docx", FileFormat.Docx)
document.Dispose()

生成された Word 文書のプレビューです。

Pythonで表を作成したWord文書

技術的なポイント

  • Section.AddTable() により、表はセクションのコンテンツフローに挿入されます
  • ResetCells(行数, 列数) で表の構造を明示的に定義します
  • Table.Rows[row].Cells[col]TableCell を返します

Word の表では、各セルが独立したコンテンツコンテナとして扱われます。 セル内には複数の段落、画像、書式付きテキストを配置できるため、単純な表から複雑なレポートレイアウトまで柔軟に対応できます。

動的な表生成、セル結合、個別セルの書式設定など、より高度な操作については、 Python で Word 文書に表を挿入する方法 を参照してください。

6. ヘッダーとフッターの追加

Word におけるヘッダーとフッターは セクション単位の要素 です。 本文コンテンツとは独立しており、本文のページ分割には影響しません。

各セクションは独自のヘッダー・フッターを持つため、文書内で異なる繰り返し情報を表示できます。

セクションにヘッダーとフッターを追加する

from spire.doc import Document, FileFormat, HorizontalAlignment, FieldType, BreakType

document = Document()
section = document.AddSection()
section.AddParagraph().AppendBreak(BreakType.PageBreak)

# ヘッダーを追加
header = section.HeadersFooters.Header
header_para1 = header.AddParagraph()
header_para1.AppendText("月次売上レポート").CharacterFormat.FontSize = 12
header_para1.Format.HorizontalAlignment = HorizontalAlignment.Left

header_para2 = header.AddParagraph()
header_para2.AppendText("会社名").CharacterFormat.FontSize = 12
header_para2.Format.HorizontalAlignment = HorizontalAlignment.Right

# フッターにページ番号を追加
footer = section.HeadersFooters.Footer
footer_para = footer.AddParagraph()
footer_para.Format.HorizontalAlignment = HorizontalAlignment.Center
footer_para.AppendText("ページ ").CharacterFormat.FontSize = 12
footer_para.AppendField("PageNum", FieldType.FieldPage).CharacterFormat.FontSize = 12
footer_para.AppendText(" / ").CharacterFormat.FontSize = 12
footer_para.AppendField("NumPages", FieldType.FieldNumPages).CharacterFormat.FontSize = 12

document.SaveToFile("document_header_footer.docx", FileFormat.Docx)
document.Dispose()

生成された Word 文書のプレビューです。

Pythonでヘッダーとフッターを追加したWord文書

技術メモ

  • section.HeadersFooters.Header / Footer で、セクションのヘッダー・フッターにアクセスします
  • AppendField() を使用すると、ページ番号などの動的フィールドを挿入できます

ヘッダーとフッターは、レポートタイトル、会社情報、ページ番号表示などに広く使用されます。 文書内容が変更されても自動的に更新され、Word・PDF などの出力形式とも高い互換性を保ちます。

より詳細な使用例については、 Python で Word 文書にヘッダーとフッターを挿入する方法 を参照してください。

7. セクションによるページレイアウトの制御

Spire.Doc for Python では、ページレベルのレイアウト設定はすべて Section オブジェクトを通じて管理されます。
ページサイズ、向き、余白などは、セクションが持つ PageSetup によって定義され、そのセクション内のすべてのコンテンツに適用されます。

ページサイズと向きの設定

from spire.doc import PageSize, PageOrientation

section.PageSetup.PageSize = PageSize.A4()
section.PageSetup.Orientation = PageOrientation.Portrait

技術的な解説

  • PageSetupSection が所有するレイアウト設定オブジェクトです
  • PageSize はページの物理的なサイズを定義します
  • Orientation により、縦向き(Portrait)または横向き(Landscape)を指定します

PageSetup の設定は、セクション全体に適用されます。 そのセクションに追加される段落、表、画像はすべて同じレイアウト規則に従います。 他のセクションには影響しないため、文書内で異なるレイアウトを共存させることが可能です。

ページ余白の設定

section.PageSetup.Margins.Top = 50
section.PageSetup.Margins.Bottom = 50
section.PageSetup.Margins.Left = 60
section.PageSetup.Margins.Right = 60

技術的な解説

  • Margins はセクション内の印刷可能領域を定義します
  • 余白の値はドキュメント単位で指定されます

余白はセクション単位で評価されるため、個々の段落ごとに設定する必要はありません。 なお、ヘッダーやフッターの領域には影響しません。

複数セクションを使用した異なるレイアウトの適用

文書内で異なるページレイアウトが必要な場合は、新しいセクションを追加します。

landscape_section = document.AddSection()
landscape_section.PageSetup.Orientation = PageOrientation.Landscape

技術メモ

  • AddSection() は新しいセクションを作成し、文書末尾に追加します
  • 各セクションは独自の PageSetup、ヘッダー、フッターを持ちます
  • この呼び出し以降に追加されるコンテンツは、新しいセクションに属します

複数のセクションを活用することで、縦向きと横向きのページを混在させたり、 用途に応じたレイアウトを 1 つの Word 文書内で実現できます。

以下は、上記設定を反映した Word 文書の例です。

Spire.Doc for Python を使用したWord文書のページレイアウト設定

8. 文書プロパティとメタデータの設定

Word 文書には、表示されるコンテンツとは別に、文書レベルのメタデータ を設定できます。 これらはレイアウトや描画には影響せず、文書管理や検索に利用されます。

組み込み文書プロパティの設定

document.BuiltinDocumentProperties.Title = "月次売上レポート"
document.BuiltinDocumentProperties.Author = "データ分析システム"
document.BuiltinDocumentProperties.Company = "サンプル株式会社"

技術メモ

  • BuiltinDocumentProperties を通じて、標準的な文書プロパティにアクセスできます
  • TitleAuthorCompany などをプログラムから設定可能です

文書プロパティは、ファイルのインデックス化、検索、文書管理、監査フローなどで広く利用されます。このほかにも、KeywordsSubjectCommentsHyperlink base などのメタデータを設定できます。また、Document.CustomDocumentProperties を使用すれば、カスタムプロパティの定義も可能です。

カスタムメタデータの管理方法については、Python で Word 文書のカスタムプロパティを管理する方法 を参照してください。

9. 保存・エクスポートとパフォーマンスの考慮点

Word 文書をメモリ上で構築した後、最終ステップとして保存またはエクスポートを行います。Spire.Doc for Python では、統一された API により、同一の文書構造を複数の出力形式に再利用できます。

複数形式での保存・エクスポート

文書は編集用の DOCX として保存できるほか、配布用途向けに他形式へエクスポートできます。

from spire.doc import FileFormat

document.SaveToFile("output.docx", FileFormat.Docx)
document.SaveToFile("output.pdf", FileFormat.PDF)
document.SaveToFile("output.html", FileFormat.Html)
document.SaveToFile("output.rtf", FileFormat.Rtf)

エクスポート時には、セクション、表、画像、ヘッダー、フッターなどの構造が保持され、 出力形式が異なっても一貫したレイアウトが維持されます。 対応フォーマットの一覧は、FileFormat 列挙型 を参照してください。

文書生成時のパフォーマンス最適化

大量または高頻度で Word 文書を生成する場合、以下の点を意識すると効率が向上します。

  • テンプレートやスタイルの再利用
  • 不要なセクションの作成を避ける
  • すべてのコンテンツ生成後にまとめて保存する
  • 保存・エクスポート後は document.Close() を明示的に呼び出してリソースを解放する

類似した文書を大量に生成する場合は、 個別にコンテンツを挿入するよりも 差し込み印刷(メールマージ) の方が効率的です。 Spire.Doc for Python には、バッチ生成向けのメールマージ機能が標準で用意されています。

詳細については、 Python で差し込み印刷を使用して Word 文書を一括生成する方法 を参照してください。

保存およびエクスポートは、Python による Word 文書生成の重要な工程です。 Spire.Doc for Python の出力機能と基本的なパフォーマンス対策を組み合わせることで、 単一ファイルからバッチ処理まで、安定した文書生成を実現できます。

10. Python で Word 文書を作成する際のよくある落とし穴

Word 文書をプログラムで生成する際によく発生する問題を以下に示します。

Word 文書をプレーンテキストとして扱ってしまう

問題点

コンテンツ量が変化すると書式やレイアウトが崩れる。

推奨事項

生テキストを直接挿入せず、セクション・段落・スタイルを正しく使用する。

書式設定をコードに直接埋め込む

問題点

レイアウト変更時に、複数箇所のコード修正が必要になる。

推奨事項

スタイルやセクション設定を用いて、書式ルールを一元管理する。

セクション境界を意識しない

問題点

余白やページ向きの変更が文書全体に影響してしまう。

推奨事項

異なるレイアウトは別セクションで明確に分離する。

11. まとめ

Python で Word 文書を作成する という作業は、単にテキストを書き込むだけではありません。.docx 文書は、セクション、段落、スタイル、埋め込み要素から構成される構造化オブジェクトです。

Spire.Doc for Python を使用し、Word のドキュメントモデルに沿ってコードを設計することで、編集可能で構造が明確な Word 文書を、要件の変化にも耐えられる形で生成できます。このアプローチは、バックエンドサービス、レポート生成パイプライン、文書自動化システムに特に適しています。

大規模文書の生成や文書変換機能を利用する場合は、ライセンス版 の使用が必要となります。

Published in 文書操作

透かしとは、文書の本文の背面に半透明で表示される文字列や画像のことです。Word では、著作権記号、作成者名、会社のロゴなどを透かしとして追加することで、文書の知的財産を保護できます。また、「下書き」「機密」「最終版」など、文書の状態を示す目的でも使用されます。

この記事では、Spire.Doc for Python を使用して、Python で Word 文書に文字の透かしおよび画像の透かしを挿入する方法を紹介します。

Spire.Doc for Python のインストール

この操作には、Spire.Doc for Python と plum-dispatch v1.7.4 が必要です。これらは、Spire.Doc for Python の公式ウェブサイトから手動でダウンロードするか、以下の pip コマンドでインストールできます。

pip install Spire.Doc

Python で Word 文書に文字の透かしを挿入する

Spire.Doc for Python では、TextWatermark クラスを使用して文字の透かしを作成し、Document.Watermark プロパティを通じて文書に挿入できます。以下に手順を示します。

  • Document オブジェクトを作成します。
  • Document.LoadFromFile() メソッドを使用して、Word 文書を読み込みます。
  • TextWatermark クラスのインスタンスを作成します。
  • TextWatermark クラスの各種メソッドで、透かしに使用する文字列、フォントサイズ、色、レイアウト(斜めや水平など)を設定します。
  • Document.Watermark プロパティを使って、文字の透かしを文書に適用します。
  • Document.SaveToFile() メソッドで、編集後の文書を保存します。
  • Python
from spire.doc import Document, TextWatermark, Color, WatermarkLayout

# Documentオブジェクトを作成する
document = Document()

# Word文書を読み込む
document.LoadFromFile("Sample.docx")

# TextWatermarkオブジェクトを作成する
txtWatermark = TextWatermark()

# テキスト透かしの書式を設定する
txtWatermark.Text = "コピー厳禁"
txtWatermark.FontSize = 65
txtWatermark.Color = Color.get_Red()
txtWatermark.Layout = WatermarkLayout.Diagonal

# 文書にテキスト透かしを追加する
document.Watermark = txtWatermark

# 処理結果の文書を保存する
document.SaveToFile("output/テキスト透かし.docx")
document.Close()

Spire.DocでWord文書にテキスト透かしを挿入

Python で Word 文書に画像の透かしを挿入する

画像の透かしを設定するには、PictureWatermark クラスのメソッドを使用します。手順は以下の通りです。

  • Document オブジェクトを作成します。
  • Document.LoadFromFile() メソッドで Word 文書を読み込みます。
  • PictureWatermark クラスのインスタンスを作成します。
  • PictureWatermark.SetPicture() メソッドを使って透かしとして使用する画像を読み込み、画像の倍率や「ウォッシュアウト」効果(色を薄くする効果)を設定します。
  • Document.Watermark プロパティを使用して、画像の透かしを文書に適用します。
  • Document.SaveToFile() メソッドで、完成した文書を保存します。
  • Python
from spire.doc import Document, PictureWatermark

# Documentオブジェクトを作成する
document = Document()

# Word文書を読み込む
document.LoadFromFile("Sample.docx")

# PictureWatermarkオブジェクトを作成する
picture = PictureWatermark()

# 画像透かしの書式を設定する
picture.SetPicture("Watermark.png")
picture.Scaling = 100
picture.IsWashout = False  # 薄く表示しない(はっきり表示)

# 文書に画像透かしを追加する
document.Watermark = picture

# 処理結果の文書を保存する
document.SaveToFile("Output/画像透かし.docx")
document.Close()

Pythonを使ったWord文書への画像透かし挿入

一時ライセンスを申請する

結果ドキュメントから評価メッセージを削除したい場合、または機能制限を取り除く場合は、についてこのメールアドレスはスパムボットから保護されています。閲覧するにはJavaScriptを有効にする必要があります。にお問い合わせ、30 日間有効な一時ライセンスを取得してください。

Published in 透かし

テキスト ボックスは、Word において非常に柔軟なツールであり、ページ上の任意の位置に文字列やその他の要素を配置できます。これにより、目を引くチラシ、パンフレット、報告書などを作成することが可能になります。特定の文章を強調したり、画像の近くにキャプションを追加したり、文書に装飾的な要素を加えたりと、テキスト ボックスを活用することで、実用的かつ視覚的に魅力的なドキュメント デザインが可能になります。

この記事では、Spire.Doc for Python を使用して、Python で Word 文書にテキスト ボックスを挿入・削除する方法を解説します。

Spire.Doc for Python のインストール

この操作には、Spire.Doc for Python と plum-dispatch v1.7.4 が必要です。これらは、Spire.Doc for Python の公式ウェブサイトから手動でダウンロードするか、以下の pip コマンドでインストールできます。

pip install Spire.Doc

Python で Word 文書にテキスト ボックスを挿入する

Spire.Doc for Python では、Paragraph.AppendTextBox() メソッドを使用して、特定の段落にテキスト ボックスを挿入できます。テキスト ボックスの内容や書式は、TextBox オブジェクトのプロパティを通じて設定します。以下に詳細な手順を示します。

  • Document オブジェクトを作成します。
  • Document.LoadFromFile() メソッドで Word 文書を読み込みます。
  • Section.AddParagraph() メソッドを使用して、最初のセクションに段落を追加します。
  • Paragraph.AppendTextBox() メソッドで、段落にテキスト ボックスを挿入します。
  • TextBox.Format プロパティを使って、テキスト ボックスの書式を取得し、TextBoxFormat クラスのプロパティで折り返しの種類、配置位置、線の色、塗りつぶしの色などを設定します。
  • TextBox.Body.AddParagraph() メソッドで、テキスト ボックス内に段落を追加します。
  • Paragraph.AppendPicture() メソッドを使用して、テキスト ボックス内の段落に画像を追加します。
  • Paragraph.AppendText() メソッドで、テキスト ボックスに文字列を追加します。
  • Document.SaveToFile() メソッドで、編集結果を別ファイルとして保存します。
  • Python
from spire.doc import Document, TextWrappingStyle, HorizontalOrigin, VerticalOrigin, Color, HorizontalAlignment

# Documentオブジェクトを作成します
document = Document()

# Word文書を読み込みます
document.LoadFromFile("Sample.docx")

# テキストボックスを挿入し、折り返しのスタイルを設定します
textBox = document.Sections[0].Paragraphs[0].AppendTextBox(135, 300)
textBox.Format.TextWrappingStyle = TextWrappingStyle.Square  # 四角形で折り返し

# テキストボックスの位置を設定します
textBox.Format.HorizontalOrigin = HorizontalOrigin.RightMarginArea  # 右マージン基準
textBox.Format.HorizontalPosition = -145.0  # 水平方向の位置
textBox.Format.VerticalOrigin = VerticalOrigin.Page  # ページ基準
textBox.Format.VerticalPosition = 120.0  # 垂直方向の位置

# テキストボックスの枠線のスタイルと塗りつぶし色を設定します
textBox.Format.LineColor = Color.get_DarkBlue()  # 枠線の色
textBox.Format.FillColor = Color.get_LightGray()  # 背景色

# テキストボックス内に画像を段落として挿入します
para = textBox.Body.AddParagraph()
picture = para.AppendPicture("Wikipedia.png")

# 段落の配置を中央揃えにします
para.Format.HorizontalAlignment = HorizontalAlignment.Center

# 挿入した画像のサイズを設定します
picture.Height = 90.0
picture.Width = 90.0

# テキストボックス内にテキストを第2段落として挿入します
textRange = para.AppendText("ウィキペディアは、利用者によって共同で執筆されている無料の百科事典です。"
                            "2001年の創設以来急速に成長し、現在では英語版だけでも670万本以上の記事が掲載され、"
                            "毎月数十億回の閲覧数を誇る世界最大の参考情報サイトとなっています。")

# 段落の配置を中央揃えにします
para.Format.HorizontalAlignment = HorizontalAlignment.Center

# テキストのフォントを設定します
textRange.CharacterFormat.FontName = "Calibri"
textRange.CharacterFormat.FontSize = 11.0
textRange.CharacterFormat.Italic = True  # 斜体

# 結果をファイルに保存します
document.SaveToFile("output/テキストボックスの挿入.docx")
document.Close()

Pythonを使ってWordにテキストボックスを挿入

Python で Word 文書からテキスト ボックスを削除する

Spire.Doc for Python では、Document.TextBoxes.RemoveAt(int index) メソッドを使用して、指定したテキスト ボックスを削除できます。文書内のすべてのテキスト ボックスを一括で削除したい場合は、Document.TextBoxes.Clear() メソッドを使用します。以下は、最初のテキスト ボックスを削除する例です。

  • Document オブジェクトを作成します。
  • Document.LoadFromFile() メソッドで Word 文書を読み込みます。
  • Document.TextBoxes.RemoveAt(int index) メソッドを使用して、最初のテキスト ボックスを削除します。
  • Document.SaveToFile() メソッドで、編集済みの文書を別ファイルとして保存します。
  • Python
from spire.doc import Document

# Documentオブジェクトを作成します
document = Document()

# Word文書を読み込みます
document.LoadFromFile("output/テキストボックスの挿入.docx")

# 最初のテキストボックスを削除します
document.TextBoxes.RemoveAt(0)

# すべてのテキストボックスを削除する場合(コメントを外して使用):
# document.TextBoxes.Clear()

# 結果の文書を保存します
document.SaveToFile("output/テキストボックスの削除.docx")
document.Close()

Spire.Docを使ってWordからテキストボックスを削除

一時ライセンスを申請する

結果ドキュメントから評価メッセージを削除したい場合、または機能制限を取り除く場合は、についてこのメールアドレスはスパムボットから保護されています。閲覧するにはJavaScriptを有効にする必要があります。にお問い合わせ、30 日間有効な一時ライセンスを取得してください。

Word 文書の脚注は、文書の内容を補足し、参考情報や引用を提供するための便利な機能です。脚注を利用することで、複雑な概念の詳細な説明を追加したり、主張を裏付ける出典を明示したり、読者にとって興味深い補足情報を提示したりできます。学術論文や書籍、その他の引用や説明を要する文書を作成する際に、脚注はレイアウトをすっきりと保ちながら補足情報を提供するのに役立ちます。本記事では、Spire.Doc for Python を使用して Word 文書に脚注を挿入・削除する方法を解説します。

Spire.Doc for Python のインストール

この操作には、Spire.Doc for Python と plum-dispatch v1.7.4 が必要です。これらは、Spire.Doc for Python の公式ウェブサイトから手動でダウンロードするか、以下の pip コマンドでインストールできます。

pip install Spire.Doc

Python で特定の段落に脚注を挿入する

Spire.Doc for Python が提供する Paragraph.AppendFootnote(FootnoteType.Footnote) メソッドを使用すると、特定の段落に簡単に脚注を追加できます。手順は以下の通りです。

  • Document クラスのオブジェクトを作成します。
  • Document.LoadFromFile() メソッドを使用して Word 文書を読み込みます。
  • Document.Section[int] プロパティを用いて特定のセクションを取得し、Section.Paragraphs[int] プロパティを使ってセクション内の特定の段落を取得します。
  • Paragraph.AppendFootnote(FootnoteType.Footnote) メソッドを使用して、段落の末尾に脚注を追加します。
  • 脚注の本文を設定し、脚注のテキストおよび参照マークのフォントや色を調整します。
  • Document.SaveToFile() メソッドを使用して、結果の文書を保存します。
  • Python
from spire.doc import *
from spire.doc.common import *

# ドキュメントインスタンスを作成
document = Document()
# サンプルのWordドキュメントを読み込む
document.LoadFromFile("Sample.docx")

# 最初のセクションを取得
section = document.Sections.get_Item(0)

# セクション内の指定された段落を取得
paragraph = section.Paragraphs.get_Item(5)

# 段落の最後に脚注を追加
footnote = paragraph.AppendFootnote(FootnoteType.Footnote)

# 脚注のテキストコンテンツを設定
text = footnote.TextBody.AddParagraph().AppendText("Agrawal, A., Gans, J., & Goldfarb, A. (2018). 予測マシン: 人工知能の簡単な経済学。")

# テキストのフォントと色を設定
text.CharacterFormat.FontName = "Yu Mincho"
text.CharacterFormat.FontSize = 12
text.CharacterFormat.TextColor = Color.get_DarkBlue()

# 脚注参照マークのフォントと色を設定
footnote.MarkerCharacterFormat.FontName = "Calibri"
footnote.MarkerCharacterFormat.FontSize = 15
footnote.MarkerCharacterFormat.Bold = True
footnote.MarkerCharacterFormat.TextColor = Color.get_DarkCyan()

# 結果のドキュメントを保存
document.SaveToFile("output/Wordの段落に脚注を挿入.docx")
document.Close()

Spire.DocでWord文書の段落に脚注を挿入

Python で特定のテキストに脚注を挿入する

特定のテキストに脚注を追加する場合は、文書内の該当テキストを検索し、そのテキストが属する段落内の位置を取得した後に、脚注を挿入します。手順は以下の通りです。

  • Document クラスのオブジェクトを作成します。
  • Document.LoadFromFile() メソッドを使用して Word 文書を読み込みます。
  • Document.FindString() メソッドを使って特定のテキストを検索します。
  • TextSelection.GetAsOneRange() メソッドを使用して、検索結果を 1 つのテキスト範囲として取得します。
  • TextRange.OwnerParagraph プロパティを利用して、テキスト範囲が属する段落を取得します。
  • Paragraph.ChildObjects.IndexOf() メソッドを使用して、段落内でのテキスト範囲の位置を特定します。
  • Paragraph.AppendFootnote(FootnoteType.Footnote) メソッドで脚注を追加し、Paragraph.ChildObjects.Insert() メソッドで特定のテキストの後に脚注を挿入します。
  • 脚注の本文を設定し、脚注のテキストおよび参照マークのフォントや色を調整します。
  • Document.SaveToFile() メソッドを使用して、結果の文書を保存します。
  • Python
from spire.doc import *
from spire.doc.common import *

# ドキュメントインスタンスを作成
document = Document()
# サンプルのWordドキュメントを読み込む
document.LoadFromFile("Sample.docx")

# 特定のテキストを検索
selection = document.FindString("アルゴリズムのバイアス", False, True)

# 検索したテキストを1つのテキスト範囲として取得
textRange = selection.GetAsOneRange()

# テキスト範囲が存在する段落を取得
paragraph = textRange.OwnerParagraph

# 段落内でのテキスト範囲のインデックス位置を取得
index = paragraph.ChildObjects.IndexOf(textRange)

# 段落に脚注を追加
footnote = paragraph.AppendFootnote(FootnoteType.Footnote)

# テキスト範囲の後に脚注を挿入
paragraph.ChildObjects.Insert(index + 1, footnote)

# 脚注のテキストコンテンツを設定
text = footnote.TextBody.AddParagraph().AppendText("アルゴリズムのバイアス: AIシステムがデータに基づいて判断を下す際に、特定の偏りが生じる現象。これにより、誤った結果や不公平な結果が生じることがあります。")

# テキストのフォントと色を設定
text.CharacterFormat.FontName = "Yu Mincho"
text.CharacterFormat.FontSize = 12
text.CharacterFormat.TextColor = Color.get_DarkBlue()

# 脚注参照マークのフォントと色を設定
footnote.MarkerCharacterFormat.FontName = "Calibri"
footnote.MarkerCharacterFormat.FontSize = 15
footnote.MarkerCharacterFormat.Bold = True
footnote.MarkerCharacterFormat.TextColor = Color.get_DarkGreen()

# 結果のドキュメントを保存
document.SaveToFile("output/Wordのテキストに脚注を挿入.docx")
document.Close()

PythonでWord文書のテキストに脚注を挿入

Python で Word 文書の脚注を削除する

不要になった脚注を削除することで、文書をより整理された状態にできます。脚注を削除する手順は以下の通りです。

  • Document クラスのオブジェクトを作成します。
  • Document.LoadFromFile() メソッドを使用して Word 文書を読み込みます。
  • Document.Sections[int] プロパティを使って特定のセクションを取得します。
  • 取得したセクション内の各段落をループ処理し、脚注を検索します。
  • Paragraph.ChildObjects.RemoveAt() メソッドを使用して脚注を削除します。
  • Document.SaveToFile() メソッドを使用して、結果の文書を保存します。
  • Python
from spire.doc import *
from spire.doc.common import *

# ドキュメントインスタンスを作成
document = Document()
# サンプルのWordドキュメントを読み込む
document.LoadFromFile("output/Wordの段落に脚注を挿入.docx")

# ドキュメントの最初のセクションを取得
section = document.Sections.get_Item(0)

# セクション内の段落をループ処理
for y in range(section.Paragraphs.Count):
    para = section.Paragraphs.get_Item(y)
    index = -1
    i = 0
    cnt = para.ChildObjects.Count
    while i < cnt:
        pBase = para.ChildObjects.get_Item(i) if isinstance(para.ChildObjects.get_Item(i), ParagraphBase) else None
        if isinstance(pBase, Footnote):
            index = i
            break
        i += 1
    if index > -1:
        # 段落から脚注を削除
        para.ChildObjects.RemoveAt(index)

# 結果のドキュメントを保存
document.SaveToFile("output/Wordの脚注を削除.docx")
document.Close()

一時ライセンスを申請する

結果ドキュメントから評価メッセージを削除したい場合、または機能制限を取り除く場合は、についてこのメールアドレスはスパムボットから保護されています。閲覧するにはJavaScriptを有効にする必要があります。にお問い合わせ、30 日間有効な一時ライセンスを取得してください。

Published in 脚注

Word のヘッダーとフッターは、各ページの上部および下部の余白に配置されるセクションです。これには、ページ番号、文書タイトル、日付、作成者名などの情報を追加できます。通常、すべてのページで同じヘッダーやフッターが適用されますが、特定のシナリオでは、最初のページ、奇数ページ、偶数ページに異なるヘッダーやフッターを挿入することも可能です。本記事では、Spire.Doc for Python を使用して、Python で Word 文書にヘッダーとフッターを挿入する方法を説明します。

Spire.Doc for Python のインストール

この操作には、Spire.Doc for Python と plum-dispatch v1.7.4 が必要です。これらは、Spire.Doc for Python の公式ウェブサイトから手動でダウンロードするか、以下の pip コマンドでインストールできます。

pip install Spire.Doc

Python で Word 文書にヘッダーとフッターを挿入する

Word 文書にヘッダーやフッターを挿入するには、まず Section.HeadersFooters.Header または Section.HeadersFooters.Footer プロパティを取得し、それに段落を追加して、画像やテキスト、ページ番号、日付などを挿入します。

ヘッダーとフッターを追加する手順

  • Document オブジェクトを作成します。
  • Document.LoadFromFile() メソッドを使用して Word 文書を読み込みます。
  • Document.Sections.get_Item() メソッドを使用して、対象のセクションを取得します。
  • ヘッダーを追加する
    • Section.HeadersFooters.Header プロパティを使用してヘッダーを取得します。
    • HeaderFooter.AddParagraph() メソッドで段落を追加し、段落の配置を設定します。
    • Paragraph.AppendPicture() メソッドで画像を追加し、画像の折り返しスタイルや位置を設定します。
    • Paragraph.AppendText() メソッドでテキストを追加し、フォント名、サイズ、色などを設定します。
  • フッターを追加する
    • Section.HeadersFooters.Footer プロパティを使用してフッターを取得します。
    • フッターに段落を追加し、テキストを挿入します。
    • Paragraph.Format.Borders プロパティを使用してフッターの枠線を取得し、上部の罫線スタイルや間隔を設定します。
  • Document.SaveToFile() メソッドを使用して、変更後の文書を保存します。
  • Python
from spire.doc import Document, HorizontalAlignment, TextWrappingStyle, VerticalOrigin, ShapeVerticalAlignment, Color, BorderStyle

# Document オブジェクトを作成します
document = Document()

# Word 文書を読み込みます
document.LoadFromFile("Sample.docx")

# 最初のセクションを取得します
section = document.Sections.get_Item(0)

# ヘッダーを取得します
header = section.HeadersFooters.Header

# ヘッダーに段落を追加し、配置スタイルを設定します
headerParagraph = header.AddParagraph()
headerParagraph.Format.HorizontalAlignment = HorizontalAlignment.Left

# ヘッダーの段落に画像を追加し、折り返しスタイルと位置を設定します
headerPicture = headerParagraph.AppendPicture("Logo.png")
headerPicture.TextWrappingStyle = TextWrappingStyle.Square
headerPicture.VerticalOrigin = VerticalOrigin.Paragraph
headerPicture.VerticalAlignment = ShapeVerticalAlignment.Center

# ヘッダーの段落にテキストを追加し、フォントスタイルを設定します
text = headerParagraph.AppendText("Spire.Doc for Python\nPython 用 Word 文書処理マスター")
text.CharacterFormat.FontName = "Yu Gothic UI"
text.CharacterFormat.FontSize = 10
text.CharacterFormat.Bold = True
text.CharacterFormat.TextColor = Color.get_Blue()

# フッターを取得します
footer = section.HeadersFooters.Footer

# フッターに段落を追加し、配置スタイルを設定します
footerParagraph = footer.AddParagraph()
footerParagraph.Format.HorizontalAlignment = HorizontalAlignment.Center

# フッターの段落にテキストを追加し、フォントスタイルを設定します
text = footerParagraph.AppendText("Copyright © 2013 e-iceblue. すべての権利を保有。")
text.CharacterFormat.FontName = "Yu Gothic UI"
text.CharacterFormat.FontSize = 10

# フッターの段落に罫線を設定します
footerParagraph.Format.Borders.Top.BorderType = BorderStyle.Single
footerParagraph.Format.Borders.Top.Space = 0.05

# 結果のファイルを保存します
document.SaveToFile("output/Wordのヘッダーとフッター.docx")
document.Close()

PythonでWord文書にヘッダーとフッターを挿入

最初のページと他のページで異なるヘッダー・フッター

最初のページのみにヘッダーやフッターを追加する場合、または最初のページとそれ以外のページで異なるヘッダーやフッターを設定したい場合があります。

Spire.Doc for Python では、Section.PageSetup.DifferentFirstPageHeaderFooter プロパティを使用することで、最初のページ専用のヘッダーやフッターを設定できます。以下の手順で実装できます。

最初のページとその他のページで異なるヘッダー・フッターを設定する手順

  • Document オブジェクトを作成します。
  • Document.LoadFromFile() メソッドで Word 文書を読み込みます。
  • Document.Sections.get_Item() メソッドを使用して、対象のセクションを取得します。
  • Section.PageSetup.DifferentFirstPageHeaderFooter プロパティを True に設定し、最初のページのヘッダー・フッターを有効化します。
  • Section.HeadersFooters.FirstPageHeader プロパティを使用して最初のページのヘッダーを取得します。
  • 段落を追加し、画像を挿入します。
  • Section.HeadersFooters.FirstPageFooter プロパティを使用して最初のページのフッターを取得します。
  • 段落を追加し、テキストを挿入します。
  • その他のページのヘッダー・フッターを設定します。(最初のページのみにヘッダー・フッターを追加する場合は、この手順は不要です。)
  • Document.SaveToFile() メソッドで保存します。
  • Python
from spire.doc import Document, HorizontalAlignment, Color, BorderStyle

# Document オブジェクトを作成します
doc = Document()

# Word 文書を読み込みます
doc.LoadFromFile("Sample.docx")

# 最初のセクションを取得します
section = doc.Sections.get_Item(0)

# 先頭ページとその他のページで異なるヘッダーとフッターを有効にします
section.PageSetup.DifferentFirstPageHeaderFooter = True

# 先頭ページのヘッダーに段落を追加し、配置スタイルを設定します
headerParagraph = section.HeadersFooters.FirstPageHeader.AddParagraph()
headerParagraph.Format.HorizontalAlignment = HorizontalAlignment.Right

# ヘッダーの段落に画像を追加します
headerImage = headerParagraph.AppendPicture("Logo1.png")

# 先頭ページのフッターに段落を追加し、配置スタイルを設定します
footerParagraph = section.HeadersFooters.FirstPageFooter.AddParagraph()
footerParagraph.Format.HorizontalAlignment = HorizontalAlignment.Center

# フッターの段落にテキストを追加し、フォントスタイルを設定します
text = footerParagraph.AppendText("異なる最初のページのフッター")
text.CharacterFormat.FontSize = 11
text.CharacterFormat.FontName = "Yu Gothic UI"

# その他のページのヘッダーとフッターを設定します
# 先頭ページのみヘッダーとフッターを設定する場合、この処理は不要です
para = section.HeadersFooters.Header.AddParagraph()
para.Format.HorizontalAlignment = HorizontalAlignment.Left
paraText = para.AppendText("プロフェッショナルなWord Python API")
paraText.CharacterFormat.FontSize = 12
paraText.CharacterFormat.TextColor = Color.get_DeepPink()
paraText.CharacterFormat.FontName = "Yu Gothic UI"
para.Format.Borders.Bottom.BorderType = BorderStyle.Single
para.Format.Borders.Bottom.Space = 0.05

paragraph = section.HeadersFooters.Footer.AddParagraph()
paragraph.Format.HorizontalAlignment = HorizontalAlignment.Center
paraText = paragraph.AppendText("Spire.Doc for Python")
paraText.CharacterFormat.FontSize = 12
paraText.CharacterFormat.FontName = "Yu Gothic UI"
paraText.CharacterFormat.Bold = True
paraText.CharacterFormat.TextColor = Color.get_DodgerBlue()

# 結果の文書を保存します
doc.SaveToFile("output/異なる最初のページのヘッダーとフッター.docx")
doc.Close()

Spire.Docで挿入された異なる最初のページのヘッダーとフッター

奇数・偶数ページで異なるヘッダー・フッター

奇数ページと偶数ページで異なるヘッダーやフッターを設定するには、Spire.Doc for Python の Section.PageSetup.DifferentOddAndEvenPagesHeaderFooter プロパティを使用します。以下の手順で実装できます。

奇数ページと偶数ページで異なるヘッダー・フッターを設定する手順

  • Document オブジェクトを作成します。
  • Document.LoadFromFile() メソッドで Word 文書を読み込みます。
  • Document.Sections.get_Item() メソッドを使用して、対象のセクションを取得します。
  • Section.PageSetup.DifferentOddAndEvenPagesHeaderFooter プロパティを True に設定し、奇数ページと偶数ページで異なるヘッダー・フッターを有効化します。
  • Section.HeadersFooters.OddHeader および Section.HeadersFooters.OddFooter プロパティを使用して、奇数ページのヘッダーとフッターを取得します。
  • 段落を追加し、テキストを挿入します。
  • Section.HeadersFooters.EvenHeader および Section.HeadersFooters.EvenFooter プロパティを使用して、偶数ページのヘッダーとフッターを取得します。
  • 段落を追加し、テキストを挿入します。
  • Document.SaveToFile() メソッドで保存します。
  • Python
from spire.doc import Document, HorizontalAlignment, Color

# Document オブジェクトを作成します
doc = Document()

# Word 文書を読み込みます
doc.LoadFromFile("Sample.docx")

# 最初のセクションを取得します
section = doc.Sections.get_Item(0)

# 奇数ページと偶数ページで異なるヘッダーとフッターを有効にします
section.PageSetup.DifferentOddAndEvenPagesHeaderFooter = True

# 奇数ページのヘッダーとフッターを追加します
OHPara = section.HeadersFooters.OddHeader.AddParagraph()
OHText = OHPara.AppendText("奇数ページのヘッダー")
OHPara.Format.HorizontalAlignment = HorizontalAlignment.Center
OHText.CharacterFormat.FontName = "Yu Gothic UI"
OHText.CharacterFormat.FontSize = 12
OHText.CharacterFormat.TextColor = Color.get_Red()

OFPara = section.HeadersFooters.OddFooter.AddParagraph()
OFText = OFPara.AppendText("奇数ページのフッター")
OFPara.Format.HorizontalAlignment = HorizontalAlignment.Center
OFText.CharacterFormat.FontName = "Yu Gothic UI"
OFText.CharacterFormat.FontSize = 12
OFText.CharacterFormat.TextColor = Color.get_Red()

# 偶数ページのヘッダーとフッターを追加します
EHPara = section.HeadersFooters.EvenHeader.AddParagraph()
EHText = EHPara.AppendText("偶数ページのヘッダー")
EHPara.Format.HorizontalAlignment = HorizontalAlignment.Center
EHText.CharacterFormat.FontName = "Yu Gothic UI"
EHText.CharacterFormat.FontSize = 12
EHText.CharacterFormat.TextColor = Color.get_Blue()

EFPara = section.HeadersFooters.EvenFooter.AddParagraph()
EFText = EFPara.AppendText("偶数ページのフッター")
EFPara.Format.HorizontalAlignment = HorizontalAlignment.Center
EFText.CharacterFormat.FontName = "Yu Gothic UI"
EFText.CharacterFormat.FontSize = 12
EFText.CharacterFormat.TextColor = Color.get_Blue()

# 結果の文書を保存します
doc.SaveToFile("output/奇数と偶数ページのヘッダーとフッター.docx")
doc.Close()

Pythonで挿入される奇数と偶数の異なるページヘッダーとフッター

一時ライセンスを申請する

結果ドキュメントから評価メッセージを削除したい場合、または機能制限を取り除く場合は、についてこのメールアドレスはスパムボットから保護されています。閲覧するにはJavaScriptを有効にする必要があります。にお問い合わせ、30 日間有効な一時ライセンスを取得してください。

Word ドキュメントのフォントを変更すると、見た目や読みやすさが大きく変わります。文書のスタイルを向上させたり、特定のフォーマット要件に合わせたりするために、フォントの変更は有効です。Spire.Doc for Python を使用すると、Word ドキュメント内の段落または特定のテキストのフォントを変更できます。この記事では、Python を使って Word ドキュメントのフォントを変更する方法を解説します。

Spire.Doc for Python のインストール

この操作には、Spire.Doc for Python と plum-dispatch v1.7.4 が必要です。これらは、Spire.Doc for Python の公式ウェブサイトから手動でダウンロードするか、以下の pip コマンドでインストールできます。

pip install Spire.Doc

Python で段落のフォントを変更する

Spire.Doc for Python を使用すると、ParagraphStyle オブジェクトを作成し、それを段落に適用することでフォント情報を指定できます。以下に、段落のフォントを変更する階段を紹介します。

  • Document インスタンスを作成します。
  • Document.LoadFromFile() メソッドを使用して Word ファイルを読み込みます。
  • Document.Sections[index] プロパティを使用して、特定のセクションを取得します。
  • Section.Paragraphs[index] プロパティを使用し、フォントを変更したい段落を取得します。
  • ParagraphStyle インスタンスを作成し、フォント名、フォントカラー、フォントスタイルを指定します。
  • Document.Styles.Add() メソッドを使用して、作成したスタイルをドキュメントに追加します。
  • Paragraph.ApplyStyle() メソッドを使用して、スタイルを段落に適用します。
  • Document.SaveToFile() メソッドを使用し、変更後の文書を保存します。
  • Python
from spire.doc import Document, ParagraphStyle, Color

# Document インスタンスを作成します
doc = Document()

# Word 文書を読み込みます
doc.LoadFromFile('Sample.docx')

# 最初のセクションを取得します
section = doc.Sections.get_Item(0)

# 特定の段落を取得します
paragraph = section.Paragraphs.get_Item(2)
print(paragraph.Text)

# 段落スタイルを作成します
style = ParagraphStyle(doc)
style.Name = '段落のフォント'
style.CharacterFormat.FontName = 'Yu Gothic UI'
style.CharacterFormat.Bold = True
style.CharacterFormat.Italic = True
style.CharacterFormat.TextColor = Color.get_Red()
doc.Styles.Add(style)

# スタイルを段落に適用します
paragraph.ApplyStyle(style.Name)

# 結果の文書を保存します
doc.SaveToFile('output/Wordの段落フォントの変更.docx')
doc.Dispose()

PythonでWord文書の段落のフォントを変更

Python で特定のテキストのフォントを変更する

Word ドキュメント内の特定の文字、句、文章のフォントを変更するためには、先に変更したいテキストを検索し、その文字に対してフォントカラーやスタイルを設定します。以下に詳細な階段を紹介します。

  • Document インスタンスを作成します。
  • Document.LoadFromFile() メソッドを使用して Word ファイルを読み込みます。
  • Document.FindAllString() メソッドを使用し、変更したい文字を検索します。
  • 検索結果をループ出力し、毎回の検索結果に対してフォントカラーやスタイルを変更します。
  • Document.SaveToFile() メソッドを使用し、変更後の文書を保存します。
  • Python
from spire.doc import Document, Color

# Document インスタンスを作成します
doc = Document()

# Word 文書を読み込みます
doc.LoadFromFile('Sample.docx')

# フォントを変更したいテキストを検索します
textSelections = doc.FindAllString('有効成分', False, True)

# テキストのフォントスタイルを変更します
for selection in textSelections:
    selection.GetAsOneRange().CharacterFormat.TextColor = Color.get_Red()
    selection.GetAsOneRange().CharacterFormat.Bold = True

# 結果の文書を保存します
doc.SaveToFile('output/Wordのテキストフォントの変更.docx')
doc.Dispose()

Spire.DocでWord文書テキストのフォントを変更

一時ライセンスを申請する

結果ドキュメントから評価メッセージを削除したい場合、または機能制限を取り除く場合は、についてこのメールアドレスはスパムボットから保護されています。閲覧するにはJavaScriptを有効にする必要があります。にお問い合わせ、30 日間有効な一時ライセンスを取得してください。

Published in フォント

Word 文書のコメント機能は、コラボレーションやフィードバックにおいて非常に重要な役割を果たします。コメントを活用することで、意見の共有、提案、説明、議論をスムーズに行うことができます。アイデアを伝えたり、既存のコメントに返信したり、不要なコメントを削除したりすることで、ドキュメントの作業効率を大幅に向上させることができます。本記事では、Spire.Doc for Python を使用して Python で Word 文書のコメントを追加、削除、返信する方法について解説します。

Spire.Doc for Python のインストール

この操作には、Spire.Doc for Python と plum-dispatch v1.7.4 が必要です。これらは、Spire.Doc for Python の公式ウェブサイトから手動でダウンロードするか、以下の pip コマンドでインストールできます。

pip install Spire.Doc

Python で Word 文書の段落にコメントを追加する

Spire.Doc for Python では、Paragraph.AppendComment() メソッドを使用して、指定した段落にコメントを追加できます。コメント対象のテキスト範囲は、コメントの開始マークと終了マークを設定することで制御します。以下の手順で段落にコメントを追加します。

  • Document クラスのオブジェクトを作成し、Document.LoadFromFile() メソッドで Word 文書を読み込みます。
  • Document.Sections.get_Item() メソッドを使用して最初のセクションを取得します。
  • Section.Paragraphs.get_Item() メソッドを使用して、そのセクションの最初の段落を取得します。
  • Paragraph.AppendComment() メソッドで、段落にコメントを追加します。
  • Comment.Format.Author プロパティを設定して、コメントの作成者を指定します。
  • コメントの開始マーク (CommentMark) と終了マーク (CommentMark) を作成し、それらを CommentMark.CommentId プロパティを通じてコメントの開始・終了位置として設定します。
  • Paragraph.ChildObjects.Insert() メソッドを使用して、コメントの開始マークと終了マークをそれぞれ段落の先頭と末尾に挿入します。
  • Document.SaveToFile() メソッドで Word 文書を保存します。
  • Python
from spire.doc import Document, CommentMark, CommentMarkType

# Document クラスのオブジェクトを作成し、Word 文書を読み込みます
doc = Document()
doc.LoadFromFile("Sample.docx")

# 最初のセクションを取得します
section = doc.Sections.get_Item(0)

# 4 番目の段落を取得します
paragraph = section.Paragraphs.get_Item(3)

# 段落にコメントを追加します
comment = paragraph.AppendComment("この部分はさらに説明が必要です。")

# コメントの著者を設定します
comment.Format.Author = "大輝"

# コメントの開始マークと終了マークを作成し、作成したコメントの開始マークと終了マークとして設定します
commentStart = CommentMark(doc, CommentMarkType.CommentStart)
commentEnd = CommentMark(doc, CommentMarkType.CommentEnd)
commentStart.CommentId = comment.Format.CommentId
commentEnd.CommentId = comment.Format.CommentId

# コメントの開始マークと終了マークを段落の先頭と末尾に挿入します
paragraph.ChildObjects.Insert(0, commentStart)
paragraph.ChildObjects.Add(commentEnd)

# 文書を保存します
doc.SaveToFile("output/段落へのコメント.docx")
doc.Close()

PythonでWordの段落にコメントを追加

Python で Word 文書のテキストにコメントを追加する

Spire.Doc for Python では、指定したテキストを検索し、その部分にコメントを追加することも可能です。以下の手順で、特定のテキストにコメントを追加します。

  • Document クラスのオブジェクトを作成し、Document.LoadFromFile() メソッドで Word 文書を読み込みます。
  • Document.FindString() メソッドを使用して、コメントを追加したいテキストを検索します。
  • Comment クラスのオブジェクトを作成し、Comment.Body.AddParagraph().Text プロパティでコメント内容を設定し、Comment.Format.Author プロパティで作成者を指定します。
  • TextSelection.GetAsOneRange() メソッドを使用して、検索したテキストを TextRange として取得し、TextRange.OwnerParagraph プロパティを使ってそのテキストが属する段落を取得します。
  • Paragraph.ChildObjects.Insert() メソッドで、検索したテキストの後にコメントを挿入します。
  • コメントの開始マーク (CommentMark) と終了マーク (CommentMark) を作成し、それらを CommentMark.CommentId プロパティを通じてコメントの開始・終了位置として設定します。
  • Paragraph.ChildObjects.Insert() メソッドを使用して、検索したテキストの前後にコメントの開始マークと終了マークを挿入します。
  • Document.SaveToFile() メソッドで Word 文書を保存します。
  • Python
from spire.doc import Document, Comment, CommentMark, CommentMarkType

# Document クラスのオブジェクトを作成し、Word 文書を読み込みます
doc = Document()
doc.LoadFromFile("Sample.docx")

# コメントを追加するテキストを検索します
text = doc.FindString("抗酸化作用", True, True)

# コメントを作成し、コメントの内容と著者を設定します
comment = Comment(doc)
comment.Body.AddParagraph().Text = "抗酸化作用について、さらに詳しく説明する必要があります。"
comment.Format.Author = "奈々"

# 検索したテキストをテキスト範囲として取得し、それが属する段落を取得します
range = text.GetAsOneRange()
paragraph = range.OwnerParagraph

# コメントを段落に追加します
paragraph.ChildObjects.Insert(paragraph.ChildObjects.IndexOf(range) + 1, comment)

# コメントの開始マークと終了マークを作成し、作成したコメントの開始マークと終了マークとして設定します
commentStart = CommentMark(doc, CommentMarkType.CommentStart)
commentEnd = CommentMark(doc, CommentMarkType.CommentEnd)
commentStart.CommentId = comment.Format.CommentId
commentEnd.CommentId = comment.Format.CommentId

# 作成したコメントの開始マークと終了マークを、検索したテキストの前後に挿入します
paragraph.ChildObjects.Insert(paragraph.ChildObjects.IndexOf(range), commentStart)
paragraph.ChildObjects.Insert(paragraph.ChildObjects.IndexOf(range) + 1, commentEnd)

# 文書を保存します
doc.SaveToFile("output/テキストへのコメント.docx")
doc.Close()

Spire.DocでWordのテキストにコメントを追加

Python で Word 文書のコメントを削除する

Spire.Doc for Python では、Document.Comments.RemoveAt() メソッドを使用して特定のコメントを削除できます。また、Document.Comments.Clear() メソッドを使用すれば、すべてのコメントを削除できます。以下の手順でコメントを削除します。

  • Document クラスのオブジェクトを作成し、Document.LoadFromFile() メソッドで Word 文書を読み込みます。
  • Document.Comments.RemoveAt() メソッドを使用して特定のコメントを削除する、または Document.Comments.Clear() メソッドですべてのコメントを削除します。
  • Document.SaveToFile() メソッドで Word 文書を保存します。
  • Python
from spire.doc import Document

# Document クラスのオブジェクトを作成し、Word 文書を読み込みます
doc = Document()
doc.LoadFromFile("Sample1.docx")

# 2 番目のコメントを削除します
doc.Comments.RemoveAt(1)

# すべてのコメントを削除します
# doc.Comments.Clear()

# 文書を保存します
doc.SaveToFile("output/コメントの削除.docx")
doc.Close()

PythonでWordからコメントを削除

Python で Word 文書のコメントに返信する

Spire.Doc for Python を使用すると、Comment.ReplyToComment(Comment) メソッドを利用して、特定のコメントに対して返信を追加できます。以下の手順でコメントに返信を追加します。

  • Document クラスのオブジェクトを作成し、Document.LoadFromFile() メソッドで Word 文書を読み込みます。
  • Document.Comments.get_Item() メソッドを使用して、対象のコメントを取得します。
  • Comment クラスのオブジェクトを作成し、Comment.Body.AddParagraph().Text プロパティでコメント内容を設定し、Comment.Format.Author プロパティで作成者を指定します。
  • Comment.ReplyToComment() メソッドを使用して、作成したコメントを取得したコメントへの返信として設定します。
  • Document.SaveToFile() メソッドで Word 文書を保存します。
  • Python
from spire.doc import Document, Comment

# Document クラスのオブジェクトを作成し、Word 文書を読み込みます
doc = Document()
doc.LoadFromFile("output/テキストへのコメント.docx")

# コメントを取得します
comment = doc.Comments.get_Item(0)

# 返信コメントを作成し、内容と著者を設定します
reply = Comment(doc)
reply.Body.AddParagraph().Text = "これは次のバージョンに追加されます。"
reply.Format.Author = "優花"


# 取得したコメントへの返信として作成したコメントを設定します
comment.ReplyToComment(reply)

# 文書を保存します
doc.SaveToFile("output/コメントへの返信.docx")
doc.Close()

Python用Spire.DocでWordのコメントに返信

一時ライセンスを申請する

結果ドキュメントから評価メッセージを削除したい場合、または機能制限を取り除く場合は、についてこのメールアドレスはスパムボットから保護されています。閲覧するにはJavaScriptを有効にする必要があります。にお問い合わせ、30 日間有効な一時ライセンスを取得してください。

Published in コメント

Word 文書にブックマークを追加すると、特定の位置をマークしてすばやく参照したり移動したりできるようになります。ブックマークは仮想的な目印として機能し、長い文書内の重要なセクションを簡単に見つけるのに役立ちます。本記事では、Spire.Doc for Python を使用して Word 文書にブックマークを追加する方法を紹介します。

Spire.Doc for Python のインストール

この操作には、Spire.Doc for Python と plum-dispatch v1.7.4 が必要です。これらは、Spire.Doc for Python の公式ウェブサイトから手動でダウンロードするか、以下の pip コマンドでインストールできます。

pip install Spire.Doc

Word の段落にブックマークを追加する

Spire.Doc for Python では、BookmarkStart クラスがブックマークの開始位置を、BookmarkEnd クラスがブックマークの終了位置を表します。段落をブックマークするには、段落の先頭に BookmarkStart オブジェクトを挿入し、末尾に BookmarkEnd オブジェクトを追加します。具体的な手順は次のとおりです。

  • Document オブジェクトを作成します。
  • Document.LoadFromFile() メソッドを使用して Word ファイルを読み込みます。
  • Document.Sections[index].Paragraphs[index] プロパティを使用して対象の段落を取得します。
  • Paragraph.AppendBookmarkStart() メソッドで BookmarkStart を作成し、Paragraph.Items.Insert() メソッドで段落の先頭に挿入します。
  • Paragraph.AppendBookmarkEnd() メソッドを使用して段落の末尾に BookmarkEnd を追加します。
  • Document.SaveToFile() メソッドを使用して、文書を別の Word ファイルとして保存します。
  • Python
from spire.doc import Document

# Document オブジェクトを作成します
doc = Document()

# サンプルの Word ファイルを読み込みます
doc.LoadFromFile('Sample.docx')

# 2 番目の段落を取得します
paragraph = doc.Sections.get_Item(0).Paragraphs.get_Item(1)

# ブックマークの開始を作成します
start = paragraph.AppendBookmarkStart('ブックマーク 1')

# 段落の先頭に挿入します
paragraph.Items.Insert(0, start)

# 段落の末尾にブックマークの終了を追加します
paragraph.AppendBookmarkEnd('ブックマーク 1')

# ファイルを保存します
doc.SaveToFile('output/段落にブックマークを追加.docx')
doc.Dispose()

Spire.DocでWord文書の段落にブックマークを挿入

特定の Word のテキストにブックマークを追加する

特定のテキストをブックマークするには、まず文書内で該当するテキストを見つけ、その段落内の位置を取得します。次に、そのテキストの前に BookmarkStart を、後に BookmarkEnd を挿入します。具体的な手順は次のとおりです。

  • Document オブジェクトを作成します。
  • Document.LoadFromFile() メソッドを使用して Word ファイルを読み込みます。
  • 文書内でブックマークを付けたい文字列を検索します。
  • その文字列が属する段落を取得し、段落内での位置を特定します。
  • 文字列の前に BookmarkStart を挿入し、後に BookmarkEnd を挿入します。
  • Document.SaveToFile() メソッドを使用して、文書を別の Word ファイルとして保存します。
  • Python
from spire.doc import Document

# Document オブジェクトを作成します
doc = Document()

# サンプルの Word ファイルを読み込みます
doc.LoadFromFile('Sample.docx')

# 検索する文字列を指定します
stringToFind = '抗酸化作用'

# 文書内で指定した文字列を検索します
finds = doc.FindAllString(stringToFind, False, True)
specificText = finds[0]

# 検索した文字列が含まれる段落を取得します
paragraph = specificText.GetAsOneRange().OwnerParagraph

# 段落内での文字列のインデックスを取得します
index = paragraph.ChildObjects.IndexOf(specificText.GetAsOneRange())

# ブックマークの開始を作成します
start = paragraph.AppendBookmarkStart("ブックマーク 2")

# 指定したインデックスの位置にブックマークの開始を挿入します
paragraph.ChildObjects.Insert(index, start)

# ブックマークの終了を作成します
end = paragraph.AppendBookmarkEnd("ブックマーク 2")

# 検索した文字列の末尾にブックマークの終了を挿入します
paragraph.ChildObjects.Insert(index + 2, end)

# 文書を別のファイルとして保存します
doc.SaveToFile("output/テキストにブックマークを挿入.docx")
doc.Dispose()

PythonでWord文書のテキストにブックマークを挿入

一時ライセンスを申請する

結果ドキュメントから評価メッセージを削除したい場合、または機能制限を取り除く場合は、についてこのメールアドレスはスパムボットから保護されています。閲覧するにはJavaScriptを有効にする必要があります。にお問い合わせ、30 日間有効な一時ライセンスを取得してください。

Published in ブックマーク

ハイパーリンクは、動的でインタラクティブな Word 文書を作成するために欠かせない要素です。特定のテキストやオブジェクトを他の文書、ウェブページ、メールアドレス、または同じ文書内の特定の位置にリンクすることで、ユーザーは情報をシームレスに移動できます。本記事では、Spire.Doc for Python を使用して、Python で Word 文書にハイパーリンクを追加または削除する方法を学びます。

Spire.Doc for Python のインストール

この操作には、Spire.Doc for Python と plum-dispatch v1.7.4 が必要です。これらは、Spire.Doc for Python の公式ウェブサイトから手動でダウンロードするか、以下の pip コマンドでインストールできます。

pip install Spire.Doc

Python で Word にハイパーリンクを追加する

Spire.Doc for Python は、段落内のテキストや画像にウェブリンク、メールリンク、ファイルリンク、またはブックマークリンクを追加するための Paragraph.AppendHyperlink() メソッドを提供します。以下に詳細な手順を示します。

  • Document オブジェクトを作成します。
  • セクションと段落を追加します。
  • Paragraph.AppendHyperlink(link: str, text: str, type: HyperlinkType) メソッドを使用して、テキストに基づいたハイパーリンクを挿入します。
  • Paragraph.AppendPicture() メソッドを使用して、段落に画像を追加します。
  • Paragraph.AppendHyperlink(link: str, picture: DocPicture, type: HyperlinkType) メソッドを使用して、画像に基づいたハイパーリンクを挿入します。
  • Document.SaveToFile() メソッドを使用して、結果の文書を保存します。
  • Python
from spire.doc import *

# Word文書を作成する
doc = Document()

# セクションを追加する
section = doc.AddSection()
section.PageSetup.Margins.All = 72.0

# 段落スタイルを作成する
style = ParagraphStyle(doc)
style.Name = "例のスタイル"
style.CharacterFormat.FontName = "Yu Gothic UI"
style.CharacterFormat.FontSize = 16.0
doc.Styles.Add(style)

# 段落を追加する
paragraph = section.AddParagraph()
paragraph.ApplyStyle(style.Name)
paragraph.AppendHyperlink("https://jp.e-iceblue.com/", "ホームページ", HyperlinkType.WebLink)

# 改行を挿入する
paragraph.AppendBreak(BreakType.LineBreak)
paragraph.AppendBreak(BreakType.LineBreak)

# メールリンクを追加する
paragraph.AppendHyperlink("mailto:support @e-iceblue.com", "メールを送る", HyperlinkType.EMailLink)

# 改行を挿入する
paragraph.AppendBreak(BreakType.LineBreak)
paragraph.AppendBreak(BreakType.LineBreak)

# ファイルリンクを追加する
filePath = "レポート.xlsx"
paragraph.AppendHyperlink(filePath, "レポートを開く", HyperlinkType.FileLink)

# 改行を挿入する
paragraph.AppendBreak(BreakType.LineBreak)
paragraph.AppendBreak(BreakType.LineBreak)

# 別のセクションを追加し、ブックマークを作成する
section2 = doc.AddSection()
bookmarkParagraph = section2.AddParagraph()
bookmarkParagraph.AppendText("ここにブックマークがあります")
start = bookmarkParagraph.AppendBookmarkStart("myBookmark")
bookmarkParagraph.Items.Insert(0, start)
bookmarkParagraph.AppendBookmarkEnd("myBookmark")

# ブックマークへのリンクを追加する
paragraph.AppendHyperlink("myBookmark", "この文書内の場所へ移動", HyperlinkType.Bookmark)

# 改行を挿入する
paragraph.AppendBreak(BreakType.LineBreak)
paragraph.AppendBreak(BreakType.LineBreak)

# 画像リンクを追加する
imagePath = "Logo.png"
picture = paragraph.AppendPicture(imagePath)
paragraph.AppendHyperlink("https://jp.e-iceblue.com/", picture, HyperlinkType.WebLink)

# ファイルに保存する
doc.SaveToFile("output/Wordでハイパーリンクを作成.docx", FileFormat.Docx2019)
doc.Dispose()

PythonコードによるWord文書へのハイパーリンク挿入

Python で Word からハイパーリンクを削除する

Word 文書内のすべてのハイパーリンクを一度に削除するには、文書内のすべてのハイパーリンクを見つけて、それらをフラット化するカスタムメソッド FlattenHyperlinks() を作成する必要があります。以下に詳細な手順を示します。

  • Document オブジェクトを作成します。
  • Document.LoadFromFile() メソッドを使用して、サンプルの Word 文書を読み込みます。
  • カスタムメソッド FindAllHyperlinks() を使用して、文書内のすべてのハイパーリンクを見つけます。
  • ハイパーリンクをループして、カスタムメソッド FlattenHyperlinks() を使用してすべてをフラット化します。
  • Document.SaveToFile() メソッドを使用して、結果の文書を保存します。
  • Python
from spire.doc import *
from spire.doc.common import *


# ドキュメント内のすべてのハイパーリンクを検索する関数
def FindAllHyperlinks(document):
    hyperlinks = []
    for i in range(document.Sections.Count):
        section = document.Sections.get_Item(i)
        for j in range(section.Body.ChildObjects.Count):
            sec = section.Body.ChildObjects.get_Item(j)
            if sec.DocumentObjectType == DocumentObjectType.Paragraph:
                for k in range((sec if isinstance(sec, Paragraph) else None).ChildObjects.Count):
                    para = (sec if isinstance(sec, Paragraph)
                            else None).ChildObjects.get_Item(k)
                    if para.DocumentObjectType == DocumentObjectType.Field:
                        field = para if isinstance(para, Field) else None
                        if field.Type == FieldType.FieldHyperlink:
                            hyperlinks.append(field)
    return hyperlinks


# ハイパーリンクフィールドを平坦化する関数
def FlattenHyperlinks(field):
    ownerParaIndex = field.OwnerParagraph.OwnerTextBody.ChildObjects.IndexOf(
        field.OwnerParagraph)
    fieldIndex = field.OwnerParagraph.ChildObjects.IndexOf(field)
    sepOwnerPara = field.Separator.OwnerParagraph
    sepOwnerParaIndex = field.Separator.OwnerParagraph.OwnerTextBody.ChildObjects.IndexOf(
        field.Separator.OwnerParagraph)
    sepIndex = field.Separator.OwnerParagraph.ChildObjects.IndexOf(
        field.Separator)
    endIndex = field.End.OwnerParagraph.ChildObjects.IndexOf(field.End)
    endOwnerParaIndex = field.End.OwnerParagraph.OwnerTextBody.ChildObjects.IndexOf(
        field.End.OwnerParagraph)

    FormatFieldResultText(field.Separator.OwnerParagraph.OwnerTextBody,
                          sepOwnerParaIndex, endOwnerParaIndex, sepIndex, endIndex)

    field.End.OwnerParagraph.ChildObjects.RemoveAt(endIndex)

    for i in range(sepOwnerParaIndex, ownerParaIndex - 1, -1):
        if i == sepOwnerParaIndex and i == ownerParaIndex:
            for j in range(sepIndex, fieldIndex - 1, -1):
                field.OwnerParagraph.ChildObjects.RemoveAt(j)

        elif i == ownerParaIndex:
            for j in range(field.OwnerParagraph.ChildObjects.Count - 1, fieldIndex - 1, -1):
                field.OwnerParagraph.ChildObjects.RemoveAt(j)

        elif i == sepOwnerParaIndex:
            for j in range(sepIndex, -1, -1):
                sepOwnerPara.ChildObjects.RemoveAt(j)
        else:
            field.OwnerParagraph.OwnerTextBody.ChildObjects.RemoveAt(i)


# フィールドをテキスト範囲に変換し、テキストの書式設定をクリアする関数
def FormatFieldResultText(ownerBody, sepOwnerParaIndex, endOwnerParaIndex, sepIndex, endIndex):
    for i in range(sepOwnerParaIndex, endOwnerParaIndex + 1):
        para = ownerBody.ChildObjects[i] if isinstance(
            ownerBody.ChildObjects[i], Paragraph) else None
        if i == sepOwnerParaIndex and i == endOwnerParaIndex:
            for j in range(sepIndex + 1, endIndex):
                if isinstance(para.ChildObjects[j], TextRange):
                    FormatText(para.ChildObjects[j])

        elif i == sepOwnerParaIndex:
            for j in range(sepIndex + 1, para.ChildObjects.Count):
                if isinstance(para.ChildObjects[j], TextRange):
                    FormatText(para.ChildObjects[j])
        elif i == endOwnerParaIndex:
            for j in range(0, endIndex):
                if isinstance(para.ChildObjects[j], TextRange):
                    FormatText(para.ChildObjects[j])
        else:
            for j, unusedItem in enumerate(para.ChildObjects):
                if isinstance(para.ChildObjects[j], TextRange):
                    FormatText(para.ChildObjects[j])


# テキストをフォーマットする関数
def FormatText(tr):
    tr.CharacterFormat.TextColor = Color.get_Black()
    tr.CharacterFormat.UnderlineStyle = UnderlineStyle.none


# ドキュメントオブジェクトを作成
doc = Document()

# Wordファイルを読み込む
doc.LoadFromFile("output/Wordでハイパーリンクを作成.docx")

# すべてのハイパーリンクを取得
hyperlinks = FindAllHyperlinks(doc)

# すべてのハイパーリンクを平坦化
for i in range(len(hyperlinks) - 1, -1, -1):
    FlattenHyperlinks(hyperlinks[i])

# 異なるファイルに保存
doc.SaveToFile("output/Wordからハイパーリンクを削除.docx")
doc.Close()

Spire.DocでWord文書からハイパーリンクを削除

一時ライセンスを申請する

結果ドキュメントから評価メッセージを削除したい場合、または機能制限を取り除く場合は、についてこのメールアドレスはスパムボットから保護されています。閲覧するにはJavaScriptを有効にする必要があります。にお問い合わせ、30 日間有効な一時ライセンスを取得してください。

Published in ハイパーリンク

Word 文書に画像を挿入すると、大量のテキストを分割し、内容を視覚的にわかりやすくすることができます。また、複雑な概念や説明しにくい内容を効果的に伝える手段にもなります。本記事では、Spire.Doc for Python を使用してプログラムで Word 文書に画像を追加する方法を紹介します。

Spire.Doc for Python のインストール

この操作には、Spire.Doc for Python と plum-dispatch v1.7.4 が必要です。これらは、Spire.Doc for Python の公式ウェブサイトから手動でダウンロードするか、以下の pip コマンドでインストールできます。

pip install Spire.Doc

Python で Word 文書に画像を挿入する

Spire.Doc for Python では、Paragraph.AppendPicture() メソッドを使用して Word 文書に画像を挿入できます。以下の手順で実装できます。

  • Document オブジェクトを作成します。
  • Document.AddSection() メソッドを使用してセクションを追加します。
  • Section.AddParagraph() メソッドを使用して、セクションに 2 つの段落を追加します。
  • 段落にテキストを追加し、書式を設定します。
  • 画像を読み込み、Paragraph.AppendPicture() メソッドを使用して指定した段落に追加します。
  • DocPicture.Width および DocPicture.Height プロパティを使用して、画像の幅と高さを設定します。
  • DocPicture.TextWrappingStyle プロパティを使用して、画像のテキストの折り返しスタイルを設定します。
  • Document.SaveToFile() メソッドを使用して、結果の文書を保存します。
  • Python
from spire.doc import Document, TextWrappingStyle, FileFormat

# Documentオブジェクトを作成
document = Document()

# セクションを追加
section = document.AddSection()
section.PageSetup.Margins.All = 50

# 段落を追加
paragraph1 = section.AddParagraph()
# 段落にテキストを追加し、フォーマットを設定
tr = paragraph1.AppendText("Spire.Doc for Pythonは、開発者が高速かつ高品質なパフォーマンスでWord文書を作成、読み取り、書き込み、変換、および比較するために特別に設計されたプロフェッショナルなWord Python APIです。")
tr.CharacterFormat.FontName = "Yu Gothic UI"
tr.CharacterFormat.FontSize = 11
paragraph1.Format.LineSpacing = 18
paragraph1.Format.BeforeSpacing = 10
paragraph1.Format.AfterSpacing = 10

# 別の段落を追加
paragraph2 = section.AddParagraph()
tr = paragraph2.AppendText("Spire.Doc for Pythonは、多くのWord文書処理タスクを実行することを可能にします。Word 97-2003 / 2007 / 2010 / 2013 / 2016 / 2019をサポートしており、XML、RTF、TXT、XPS、EPUB、EMF、HTMLなどの一般的に使用されるファイル形式への変換やその逆も可能です。さらに、Pythonを使用してWord Doc/DocxをPDFに変換したり、WordをSVGやPostScriptに高品質で変換することをサポートしています。")
# 段落にテキストを追加し、フォーマットを設定
tr.CharacterFormat.FontName = "Yu Gothic UI"
tr.CharacterFormat.FontSize = 11
paragraph2.Format.LineSpacing = 18

# 指定した段落に画像を追加
picture = paragraph1.AppendPicture("Spire.Doc for Python.png")

# 画像の幅と高さを設定
picture.Width = 100
picture.Height = 100

# 画像のテキスト折り返しスタイルを設定
picture.TextWrappingStyle = TextWrappingStyle.Square

# 結果の文書を保存
document.SaveToFile("output/Wordに画像を挿入.docx", FileFormat.Docx)
document.Close()

Spire.Doc for PythonでWord文書に画像を挿入

Python で Word 文書の指定位置に画像を挿入する

画像を Word 文書の特定の位置に配置したい場合は、DocPicture.HorizontalPosition および DocPicture.VerticalPosition プロパティを設定することで調整できます。以下の手順で実装できます。

  • Document オブジェクトを作成します。
  • Document.AddSection() メソッドを使用してセクションを追加します。
  • Section.AddParagraph() メソッドを使用して、セクションに段落を追加します。
  • 段落にテキストを追加し、書式を設定します。
  • Paragraph.AppendPicture() メソッドを使用して、段落に画像を追加します。
  • DocPicture.Width および DocPicture.Height プロパティを使用して、画像の幅と高さを設定します。
  • DocPicture.HorizontalPosition および DocPicture.VerticalPosition プロパティを使用して、画像の横位置と縦位置を設定します。
  • DocPicture.TextWrappingStyle プロパティを使用して、画像のテキストの折り返しスタイルを設定します。
  • Document.SaveToFile() メソッドを使用して、結果の文書を保存します。
  • Python
from spire.doc import Document, FileFormat, TextWrappingStyle, Color

# Document オブジェクトを作成します。
doc = Document()

# セクションを追加します。
section = doc.AddSection()
section.PageSetup.Margins.All = 50

# セクションに段落を追加します。
paragraph = section.AddParagraph()

# 段落にテキストを追加し、書式を設定します。
textRange = paragraph.AppendText("このサンプルは、Word 文書の指定した位置に画像を挿入する方法を示します。")
textRange.CharacterFormat.FontName = "Yu Gothic UI"
textRange.CharacterFormat.FontSize = 14
textRange.CharacterFormat.TextColor = Color.get_BlueViolet()

# 段落に画像を追加します。
picture = paragraph.AppendPicture("Image.jpg")

# 画像の位置を設定します。
picture.HorizontalPosition = 150.0
picture.VerticalPosition = 80.0

# 画像のサイズを設定します。
picture.Width = 100.0
picture.Height = 160.0

# 画像の折り返しスタイルを設定します。
# (テキストの折り返しスタイルが「インライン」の場合、位置設定は適用されません。)
picture.TextWrappingStyle = TextWrappingStyle.Through

# 文書を保存します。
doc.SaveToFile("output/Wordに画像を挿入.docx", FileFormat.Docx)
doc.Close()

PythonでWord文書に任意の位置に画像を挿入

一時ライセンスを申請する

結果ドキュメントから評価メッセージを削除したい場合、または機能制限を取り除く場合は、についてこのメールアドレスはスパムボットから保護されています。閲覧するにはJavaScriptを有効にする必要があります。にお問い合わせ、30 日間有効な一時ライセンスを取得してください。

Published in 画像と図形
1 / 2