2017-04-12 46 views
1

私は、現在のドキュメントに2つのフォントが混在しているため、ドキュメントのフォント全体をArial(10pt)に変更するという幻想的な方法を探しています。python-docxを使って単語文書のフォントを変更する方法はありますか?

これは可能ですか?

- ありがとうございます! JP

+0

pythonicとはどういう意味ですか?それはdocument.paragraphsを使用すると、すべての段落を取得し、それらを介してループできるようにする必要があります – Srgrn

+0

私はアカウントのテーブルとそのサブ構造(行、セル)とドキュメントを取るより高いレベルのソリューションを探しています.paragraphs。 –

答えて

1

これは、最初に表示されるよりも複雑な問題があるため、これにアプローチする方法はいくつかあります。

Wordのテキストアイテムの「見た目の」フォント、またはより正確には「効果的な」フォントは、CSSがHTMLと同じようにスタイル階層から計算されます。

すべての上位レベルを上書きするスタイル階層の最終レベルは、実行レベルで直接適用されます。したがって、Arialを10ptにするように特定の実行を設定した場合、それは何とかそのように表示されます。

上記のレベルには、段落のデフォルトの書式、文字スタイル、段落スタイル、継承スタイル(基本スタイルの適用スタイル)、およびドキュメントの既定値があります。だから、あなたは複雑さに関する私の見解を知ることができます。これらすべてのことを「適切に」するために再調整する必要があります(これは後で編集可能になるというメリットがあります)。

しかし、強引にアプローチしたい場合は、文書内の各実行に明示的なフォントを適用するだけです。実際には、それぞれの実行時に明示的なフォント設定を削除し、スタイルまたはドキュメントのデフォルトルールで有効なフォントを使用するようにしてください。

反復処理の実行は、このaircodeようなものになります。

document = Document('my-document.docx') 
for paragraph in document.paragraphs: 
    for run in paragraph.runs: 
     font = run.font 
     # ---do font-related things--- 

for table in document.tables: 
    for row in table.rows: 
     for cell in row.cells: 
      for paragraph in cell.paragraphs: 
       for run in paragraph.runs: 
        font = run.font 
        # ---do font-related things--- 

をおそらくいくつかの関数を抽出することにより、それがきれいにしたいが、それは要点です。

関連する問題