チュートリアル

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

チュートリアル»Python»Spire.PDF for Python»テキストとフォント»Python で PDF にさまざまなフォントを適用する方法
2026-05-09

Python で PDF にさまざまなフォントを適用する方法

Python を使用して PDF に異なるフォントを適用するチュートリアル

PDF ドキュメントに適切なフォントを適用することで、可読性と視覚的な魅力が向上します。基本的なテキストレンダリング、多言語サポート、またはカスタムブランディングのいずれが必要であっても、Spire.PDF for Python は標準 PDF フォント、TrueType フォント、プライベートフォント、CJK フォントを含む柔軟なフォントオプションを提供します。

このチュートリアルでは、Spire.PDF for Python を使用して Python でさまざまなフォントを扱う実践的な手法を紹介し、プロ品質の PDF 文書を効率的に作成する方法について解説します。

クイックナビゲーション


前提条件

開始する前に、以下を確認してください:

  • Python 3.x がインストールされていること

  • Spire.PDF for Python がインストールされていること:

    pip install Spire.PDF
    

    また、Spire.PDF for Python をダウンロードして、プロジェクトに手動で追加することもできます。

  • オプション: プライベートフォント用のカスタムフォントファイル (.ttf または .otf)


Python で標準 PDF フォントを使用する

標準 PDF フォントは PDF 仕様に組み込まれており、埋め込みは不要です。14 の標準フォントには、Helvetica、Times Roman、Courier、Symbol、ZapfDingbats (太字/斜体バリアントを含む) があります。軽量ドキュメントで普遍的な互換性が必要な場合に最適です。

from spire.pdf.common import *
from spire.pdf import *

# PdfDocument オブジェクトを作成
pdf = PdfDocument()
page = pdf.Pages.Add()
brush = PdfBrushes.get_Black()
y = 50.0

# Helvetica フォントを適用
font = PdfFont(PdfFontFamily.Helvetica, 14.0)
page.Canvas.DrawString("Standard Font: Helvetica", font, brush, 0.0, y)

# Courier フォントを適用
font = PdfFont(PdfFontFamily.Courier, 14.0)
page.Canvas.DrawString("Standard Font: Courier", font, brush, 0.0, (y := y + 16.0))

# Times Roman フォントを適用
font = PdfFont(PdfFontFamily.TimesRoman, 14.0)
page.Canvas.DrawString("Standard Font: TimesRoman", font, brush, 0.0, (y := y + 16.0))

# ドキュメントを保存
pdf.SaveToFile("StandardFonts.pdf")
pdf.Close()

以下に生成されたPDF文書を示します。

標準フォントの例

重要なポイント:

  • PdfFont: PdfFontFamily 列挙型を使用してフォントインスタンスを作成
  • 埋め込み不要 — ファイルサイズが小さくなる
  • 特殊文字を含まない基本的な英語テキストに最適
  • すべての PDF ビューアーで普遍的な互換性

PDF にテキストを描画する方法についてさらに詳しく知りたい場合は、「Python で PDF にテキストを追加する方法」をご参照ください。


Python で PDF に TrueType フォントを使用する

TrueType フォント (.ttf) は、標準フォントと比較してより優れたレンダリング品質と拡張された文字サポートを提供します。太字、斜体スタイルをサポートし、多言語コンテンツに適しています。

基本的な TrueType フォントの使用

from spire.pdf.common import *
from spire.pdf import *

pdf = PdfDocument()
page = pdf.Pages.Add()
brush = PdfBrushes.get_Black()
y = 30.0

# Yu Gothic フォントを太字スタイルで適用
trueTypeFont = PdfTrueTypeFont("Yu Gothic", 14.0, PdfFontStyle.Bold, True)
page.Canvas.DrawString("TrueType フォント: Yu Gothic Bold", trueTypeFont, brush, 0.0, y)

pdf.SaveToFile("TrueTypeFonts.pdf")
pdf.Close()

以下に生成されたPDF文書を示します。

TrueType フォントの例

API の説明:

  • PdfTrueTypeFont: フォント名、サイズ、スタイル、埋め込みフラグを受け取る
  • True パラメータ: 一貫したレンダリングのためにフォントを PDF に埋め込む
  • Arial、Calibri、Times New Roman などのシステムインストール済みフォントをサポート

右から左へのテキストサポート

アラビア語やヘブライ語などの言語の場合、テキスト方向を設定:

from spire.pdf.common import *
from spire.pdf import *

pdf = PdfDocument()
page = pdf.Pages.Add()
brush = PdfBrushes.get_Black()
y = 30.0

# アラビア語テキストの例
arabicText = "\u0627\u0644\u0630\u0647\u0627\u0628\u0021\u0020" + \
             "\u0628\u062F\u0648\u0631\u0647\u0020\u062D\u0648\u0644\u0647\u0627\u0021\u0020" + \
             "\u0627\u0644\u0630\u0647\u0627\u0628\u0021"

trueTypeFont = PdfTrueTypeFont("Arial", 14.0, PdfFontStyle.Bold, True)
rctg = RectangleF(PointF(0.0, y), page.Canvas.ClientSize)
strformat = PdfStringFormat(PdfTextAlignment.Right)
strformat.RightToLeft = True
page.Canvas.DrawString(arabicText, trueTypeFont, brush, rctg, strformat)

pdf.SaveToFile("RTLText.pdf")
pdf.Close()

以下に生成されたPDF文書を示します。

右から左テキストの例

実装ノート:

  • 適切な RTL レンダリングのために RightToLeft = True を設定
  • PdfStringFormat を使用してテキスト配置を制御
  • 位置決めのために境界矩形 (RectangleF) を定義

PDF ドキュメントでプライベートフォントを使用する

プライベートフォントにより、ターゲットシステムにインストールされていないカスタムフォントファイル (.ttf/.otf) を埋め込むことができます。これにより、異なる環境間で一貫したブランディングとタイポグラフィが保証されます。

from spire.pdf.common import *
from spire.pdf import *

pdf = PdfDocument()
page = pdf.Pages.Add()
brush = PdfBrushes.get_Black()
y = 30.0

# カスタムフォントファイルを読み込む (作業ディレクトリにファイルが存在することを確認)
trueTypeFont = PdfTrueTypeFont("POTTAONE-REGULAR.TTF", 14.0)
page.Canvas.DrawString("プライベートフォント - Potta One", trueTypeFont, brush, 0.0, y)

pdf.SaveToFile("PrivateFonts.pdf")
pdf.Close()

以下に生成されたPDF文書を示します。

プライベートフォントの例

使用のヒント:

  • フォントファイルは絶対パスまたは相対パスを使用可能
  • PdfTrueTypeFont を介して読み込まれると、フォントは自動的に埋め込まれる
  • 配布前にフォントのライセンス条項を確認
  • 「ファイルが見つかりません」エラーを回避するために、デプロイメントパッケージにフォントファイルを含める

Python で PDF に CJK フォントを使用する

CJK (中国語、日本語、韓国語) フォントは、東アジア言語に必要な数千の文字をサポートします。Spire.PDF は、各言語に最適化されたフォントファミリーを提供します。

from spire.pdf.common import *
from spire.pdf import *

pdf = PdfDocument()
page = pdf.Pages.Add()
brush = PdfBrushes.get_Black()
y = 30.0

# Monotype Hei Medium で中国語テキストを描画
cjkFont = PdfCjkStandardFont(PdfCjkFontFamily.MonotypeHeiMedium, 14.0)
page.Canvas.DrawString("中文字体示例:欢迎使用 PDF 文档", cjkFont, brush, 0.0, y)

# Hanyang Systems Gothic Medium で日本語テキストを描画
cjkFont = PdfCjkStandardFont(PdfCjkFontFamily.HanyangSystemsGothicMedium, 14.0)
page.Canvas.DrawString("日本語フォントの例:PDF ドキュメントへようこそ", cjkFont, brush, 0.0, (y := y + 20.0))

# Hanyang Systems Shin MyeongJo Medium で韓国語テキストを描画
cjkFont = PdfCjkStandardFont(PdfCjkFontFamily.HanyangSystemsShinMyeongJoMedium, 14.0)
page.Canvas.DrawString("한국어 글꼴 예제: PDF 문서에 오신 것을 환영합니다", cjkFont, brush, 0.0, (y := y + 20.0))

pdf.SaveToFile("CJKFonts.pdf")
pdf.Close()

以下に生成されたPDF文書を示します。

CJK フォントの例

フォントファミリーの選択:

  • MonotypeHeiMedium: 中国語 (簡体字/繁体字) に最適化
  • HanyangSystemsGothicMedium: 日本語に最適化
  • HanyangSystemsShinMyeongJoMedium: 韓国語に最適化

正しいフォントファミリーを使用することで、各言語の適切なグリフレンダリングが保証されます。


一般的な問題と解決策

フォントファイルが見つからない

問題: フォントファイルが見つからない場合、PdfTrueTypeFont がエラーをスロー。

解決策:

import os

font_path = "custom_font.ttf"
if os.path.exists(font_path):
    font = PdfTrueTypeFont(font_path, 14.0)
else:
    print(f"フォントファイルが見つかりません: {font_path}")
  • 本番環境デプロイメントでは絶対パスを使用
  • プロジェクト構造にフォントファイルを含める
  • try-except ブロックで例外を処理

CJK 文字が四角形で表示される

問題: 中国語/日本語/韓国語の文字が空白の四角形または疑問符として表示される。

解決策:

  • 言語固有の CJK フォントファミリーを使用 (CJK フォントを使用する を参照)
  • ソースコードの Unicode エンコーディングを確認
  • 選択したフォントが必要な文字範囲をサポートしていることを確認

右から左へのテキストが逆向きに表示される

問題: アラビア語またはヘブライ語のテキストが右から左ではなく左から右にレンダリングされる。

解決策:

strformat = PdfStringFormat(PdfTextAlignment.Right)
strformat.RightToLeft = True
page.Canvas.DrawString(text, font, brush, rectangle, strformat)
  • RTL 言語の場合は常に RightToLeft = True を設定
  • RTL スクリプトをサポートするフォントを使用 (例: Arial、Times New Roman)

グリフの欠落または不正な文字

問題: 一部の文字が正しく表示されないか、完全に欠落している。

解決策:

  • 包括的な文字カバレッジを持つフォントを選択
  • デプロイメント前に代表的なテキストサンプルでテスト
  • 特殊な記号の場合、サポートされている Unicode 範囲についてフォントドキュメントを確認

結論

PDF ドキュメントに適切なフォントを適用することは、可読性、多言語サポート、全体的なドキュメントプレゼンテーションを向上させるために不可欠です。Spire.PDF for Python を使用すると、標準 PDF フォント、TrueType フォント、プライベートフォント、CJK フォントを扱うことができ、異なる言語と書式要件に対応したプロフェッショナルな PDF ドキュメントを作成できます。

各シナリオに適したフォントタイプを選択することで、互換性、外観、ファイルサイズのバランスをより効果的に取ることができます。レポート、請求書、多言語ドキュメント、またはブランド付き PDF を生成する場合でも、Spire.PDF は Python アプリケーション向けの柔軟なフォント処理機能を提供します。

Spire.PDF for Python を評価し、評価制限を解除したい場合は、30 日間の無料トライアルを申請できます。


よくある質問

標準 PDF フォントと TrueType フォントの違いは何ですか?

標準 PDF フォントは埋め込みを必要としない 14 の組み込みフォント (Helvetica、Times Roman など) で、ファイルサイズが小さくなります。TrueType フォント (.ttf) は外部フォントファイルで、より優れたレンダリング品質と幅広い文字サポートを提供しますが、PDF に埋め込む必要があります。

PDF ドキュメントで任意のフォントファイルを使用できますか?

はい、任意の TrueType (.ttf) または OpenType (.otf) フォントファイルを使用できます。ただし、フォントのライセンス条項を確認してください — 一部のフォントは埋め込みを制限したり、配布に商用ライセンスを必要としたりします。

CJK 文字が正しく表示されないのはなぜですか?

CJK 表示の問題は通常、言語に対して間違ったフォントファミリーを使用した場合に発生します。言語固有の CJK フォントを使用してください: 中国語には MonotypeHeiMedium、日本語には HanyangSystemsGothicMedium、韓国語には HanyangSystemsShinMyeongJoMedium

フォントの埋め込みにより PDF ファイルサイズが増加しますか?

はい、フォントデータが PDF に含まれるため、フォントの埋め込みによりファイルサイズが増加します。影響を最小限に抑えるには:

  • 可能な限り標準フォントを使用
  • 必要なフォントのみを埋め込む
  • 最終的な PDF を圧縮

1 つのドキュメントで異なるフォントタイプを混在させることができますか?

もちろんです。同じ PDF 内で標準フォント、TrueType フォント、プライベートフォント、CJK フォントを組み合わせることができます。各テキスト要素に異なるフォントを使用できるため、豊かなタイポグラフィと多言語コンテンツが可能になります。

本番環境でフォントをどのように処理すればよいですか?

本番環境デプロイメントの場合:

  • デプロイメントパッケージにフォントファイルを含める
  • 絶対パスを使用するか、作業ディレクトリを確認
  • ターゲットシステムで PDF レンダリングをテスト
  • エラーチェックで欠落したフォントファイルを適切に処理
Read 8 times