IRONSOFTWAREHOME

カスタムハイフネーションをPDF生成に追加する方法 in C#

Curtis Chau
Curtis Chau
Updated: 2026年3月31日

C#のPDF生成におけるカスタムハイフネーションは、狭い列、請求書、契約書、多言語レポートでの不必要なスペース、文字のオーバーフロー、そして貧弱なテキストの折返しを修正するのに役立ちます。 PDFレンダラが適切なハイフネーションパターンを適用しない場合、均等割付されたテキストは大きなギャップを残したり、行を渡って無理に分割されたりする可能性があります。

IronPDFでは、HTMLからPDFへのレンダリング中にChromiumエンジンを介してハイフネーションが処理され、Wordスタイルの文書オブジェクトモデルでは処理されません。 CSSのhyphens: autoプロパティを使用すると、レンダラーは有効な音節の区切りで単語を分割できるようになり、IronPDFはPDF生成時にこの動作を適用します。 CustomHyphenation プロパティは、ChromePdfRenderOptions 内でどのハイフネーションパターンを使用するかを制御します。

パターンファイルはTeX形式を使用し、ローカルファイルパスまたはリモートURLからロード可能です。 これにより、最終的なPDFでの単語の区切りについて、さまざまな言語と文書レイアウトにカスタムのハイフネーションルールを定義することが可能となり、より多くの制御が可能になります。

このガイドでは、C# での CustomHyphenationDefinitions API の使用方法について、ローカルおよびリモートのパターン読み込み、フォールバック動作、制限事項、エラー処理、キャッシュなどを含めて説明します。


NuGetNuGetでインストール

PM > Install-Package IronPdf

Install IronPDF by running the command above in the NuGet Package Manager Console, or search for the package in the NuGet Package Manager.
クイックスタート
  1. 1Install IronPDF with NuGet Package Manager

    PM > Install-Package IronPdf

  2. 2このコード スニペットをコピーして実行します。

    using IronPdf;
    
    // Create renderer and assign custom hyphenation patterns from a remote URL
    var renderer = new ChromePdfRenderer();
    renderer.RenderingOptions.CustomHyphenation = new CustomHyphenationDefinitions
    {
        PatternSource = "https://raw.githubusercontent.com/hyphenation/tex-hyphen/master/hyph-utf8/tex/generic/hyph-utf8/patterns/txt/hyph-en-us.pat.txt",
        ExceptionSource = "https://raw.githubusercontent.com/hyphenation/tex-hyphen/master/hyph-utf8/tex/generic/hyph-utf8/patterns/txt/hyph-en-us.hyp.txt"
    };
    
    // Render HTML with CSS hyphens:auto to trigger word breaking
    var pdf = renderer.RenderHtmlAsPdf("<div style='text-align:justify; hyphens:auto; width:120px;'>Supercalifragilisticexpialidocious</div>");
    pdf.SaveAs("hyphenated.pdf");
    C#
  3. 3実際の環境でテストするためにデプロイする

    今日プロジェクトで IronPDF を使い始めましょう無料トライアル
    arrow pointer

最小限のワークフロー

  1. IronPDF NuGetパッケージをインストールする
  2. ``のインスタンスを作成する
  3. を新しい として、`` パスまたは URL を指定してください
  4. HTMLコンテンツのCSSに `` を含める
  5. `` を呼び出し、結果を保存します

PDFレンダリングでカスタムハイフネーションはどのように機能するのか?

クラスは、レンダリング処理中に IronPDF がハイフネーション規則をどこから読み込むかを定義します。 Chromiumエンジンはこれらのパターンを読み取り、HTML要素にCSSのルールが存在する場合にそれらを適用します。

CustomHyphenationDefinitionsクラスとは何か?

このクラスは2つのプロパティを公開します:

表1: CustomHyphenationDefinitionsプロパティ
プロパティタイプ必須翻訳内容
PatternSource文字列はいハイフネーションパターンファイルのパスまたはURL (例: hyph-en-us.pat.txt)
ExceptionSource文字列なしハイフネーション例外ファイルのパスまたはURL (例: hyph-en-us.hyp.txt)

パターンファイルは、GitHubのtex-hyphenプロジェクトによって維持されるTeXハイフネーションフォーマットに従います。 各言語のリポジトリには、パターンルールを記述した hyph-{lang}.pat.txt と例外リストを記述した hyph-{lang}.hyp.txt の2つのファイルがあります。GitHub上にホストされているファイルを参照する際は、生のコンテンツURL(https://raw.githubusercontent.com/ で始まるもの)が必要です。標準的なGitHubページのURLでは、パターンテキストではなくHTMLが返されるためです。

カスタムハイフネーションが組み込みの言語設定を上書きする際の動作は?

列挙型とその には、における英語(米国)、英語(英国)、およびロシア語用の組み込みプリセットが用意されています。 プロパティは、両方が設定されている場合、明確な優先順位に従って、この列挙型よりも優先されます:

  1. カスタムハイフネーション — 有効な `` が設定されている場合、カスタムパターンが使用されます
  2. HyphenationLanguage — カスタムパターンが設定されていない場合、組み込み言語プリセットが適用されます
  3. なしne — 両方が設定されていない場合、ハイフネーションは行われません

カスタムパターンの読み込みが失敗した場合はどうなるか?

**パターン読み込み中のエラーはログに記録されますが、例外をスローしません。**レンダー操作は失敗することなく、ハイフネーションなしで続行します。 `` の値も設定されている場合、レンダラーはその組み込みプリセットにフォールバックします。

このサイレントフェイルの動作は、製品環境のための意図的な設計選択です。 リモートパターンファイルの取得中のネットワークタイムアウト、無効なファイルパス、DNS解決失敗、または不正なパターンコンテンツは、レンダリングパイプラインをクラッシュさせません。PDFはまだ生成されます - ただし、ハイフネーションされた単語区切りは欠如します。

トレードオフは可視性です。 最初のロード時に不良のパターンファイルまたは到達不能なURLは、それらが同じソース値を使用するすべての後続のレンダーに静かに影響を与えます(キャッシュも失敗状態を保存するためです)。 推奨事項は、パターンファイルを検証し、アプリケーションのスタートアップやCI/CDのデプロイチェック時にリモートURLへのネットワークアクセスを確認することです - レンダー時ではなく。


パターンファイルをリモートURLからロードする方法

`` をリモート URL に指定することは、ファイルをプロジェクトにバンドルすることなく、カスタムハイフネーションを適用する最も迅速な方法です。 以下の例は、米国 のパターンをtex-hyphenリポジトリからロードし、整列したテキストブロックをレンダリングします。

using IronPdf;

var renderer = new ChromePdfRenderer();

// Load custom patterns from a remote TeX hyphenation repository
renderer.RenderingOptions.CustomHyphenation = new CustomHyphenationDefinitions
{
    PatternSource = "https://raw.githubusercontent.com/hyphenation/tex-hyphen/master/hyph-utf8/tex/generic/hyph-utf8/patterns/txt/hyph-en-us.pat.txt",
    ExceptionSource = "https://raw.githubusercontent.com/hyphenation/tex-hyphen/master/hyph-utf8/tex/generic/hyph-utf8/patterns/txt/hyph-en-us.hyp.txt"
};

string html = @"
<html>
<head>
    <style>
        body { font-family: Arial, sans-serif; }
        .narrow-column {
            width: 150px;
            text-align: justify;
            hyphens: auto;
            -webkit-hyphens: auto;
            border: 1px solid #ccc;
            padding: 10px;
        }
    </style>
</head>
<body>
    <div class='narrow-column'>
        The extraordinarily sophisticated implementation demonstrates
        how hyphenation significantly improves the typographical quality
        of justified text in constrained column widths.
    </div>
</body>
</html>";

var pdf = renderer.RenderHtmlAsPdf(html);
pdf.SaveAs("remote-hyphenation.pdf");

出力

レンダリングされたPDFは、音節境界で単語がきれいに切れる整えられた段落を示しています。 ハイフネーションがない場合、この同じテキストは単語間の大きなギャップを生むか、列から溢れるでしょう。

Chromiumとの互換性を確保するため、のCSS宣言が必要です。 ルールにより、ハイフネーションが最も目立つようになります。 ターゲットHTML要素にどちらのCSS宣言も存在しない場合、カスタムパターンは読み込まれますが適用されません。

[[i:(URLは生のテキストコンテンツを指している必要があります。 https://github.com/hyphenation/tex-hyphen/blob/master/... のような標準的な GitHub URL は HTML ページラッパーを返すため、パターン検証に失敗します。 https://raw.githubusercontent.com/... 形式を使用するか、GitHub の"Raw"ボタンをクリックして正しい URL を取得してください。)]])}]

リモートソース制約とは何ですか?

表2: リモートURL制約
制約
プロトコルHTTPおよびHTTPS(HTTPS推奨)
許可されるコンテンツタイプtext/plain, application/octet-stream
最大応答サイズ5 MB
リクエストタイムアウト10秒
セキュリティプライベート/ローカルIPへのリクエスト (10.x.x.x, 192.168.x.x, localhost) はSSRF攻撃を防ぐためにブロックされます
拒否されたコンテンツバイナリファイル、ヌルバイトを含むファイル、<script>タグを含むファイル

コンテナおよびクラウド環境 (Docker, Azure, AWS) は、リモートロードが成功するために、パターンファイルホストへの外向きHTTPSアクセスが必要です。


私のお気に入りのこの種のライブラリはIronPDFです。PDFファイルの迅速で効率的な操作が可能です。また、PDF/A形式へのエクスポートやPDF文書へのデジタル署名といった多くの貴重な機能も備えています。

Milan Jovanovic

Microsoft MVP

ケーススタディを見る

IronOCRのおかげで私たちは年間$40,000を手作業の処理から節約し、生産性を向上させ、高影響のタスクにリソースを充てることができます。非常にお勧めします。

Brent Matzelle

最高技術責任者, OPYN

ケーススタディを見る

IronSuiteは私たちの業務において重要な役割を果たしています。これらは、フロアプランの作成や在庫管理の改善を含め、ビジネス全体の効率を向上させるツールです。

David Jones

リードソフトウェアエンジニア、Agorus Build

ケーススタディを見る

ローカルファイルからパターンファイルをどうやって読み込むのですか?

外部ネットワークへのアクセスが制限されている環境や、ビルド時のバンドルを好む環境では、``はローカルファイルシステムのパスも受け付けます:

[[i:(パターンファイルは実行前にディスクに存在している必要があります。 tex-hyphenリポジトリからhyph-en-us.hyp.txtをダウンロードし、コードで参照されているパスに配置してください。)]])}]

using IronPdf;

var renderer = new ChromePdfRenderer();

// Load English hyphenation patterns from local files
renderer.RenderingOptions.CustomHyphenation = new CustomHyphenationDefinitions
{
    PatternSource = @"C:\patterns\hyph-en-us.pat.txt",
    ExceptionSource = @"C:\patterns\hyph-en-us.hyp.txt"
};

string html = @"
<html>
<head>
    <style>
        .invoice-container {
            width: 220px;
            text-align: justify;
            hyphens: auto;
            -webkit-hyphens: auto;
            font-family: Georgia, serif;
            font-size: 11px;
            line-height: 1.5;
            border: 1px solid #ddd;
            padding: 12px;
        }
        h3 { font-size: 13px; margin-top: 0; }
        .terms { color: #555; margin-top: 10px; font-size: 9px; }
    </style>
</head>
<body>
    <div class='invoice-container'>
        <h3>Invoice #20260331</h3>
        <p>なしndiscrimination acknowledgement: The undersigned 
        representative hereby confirms that all pharmaceutical 
        reimbursement documentation has been independently 
        verified and cross-referenced against the applicable 
        regulatory framework established by the appropriate 
        governmental oversight authority.</p>
        <p class='terms'>なしtwithstanding any indemnification 
        provisions, the counterparty's disproportionate 
        liability shall not exceed the predetermined 
        recharacterization threshold established under the 
        intergovernmental cooperation agreement.</p>
    </div>
</body>
</html>";

var pdf = renderer.RenderHtmlAsPdf(html);
pdf.SaveAs("local-hyphenation.pdf");
C#

出力

以下のように、さもないと溢れたりスペーシングが過剰になる長い単語が、自動的に音節境界で分割されています。 エンジンは必要な場合にのみハイフネーションを適用します。— 行にきれいに収まる単語は分割されません。

別の言語に切り替える場合は、ファイルパスを変更するだけです:

// Switch to French hyphenation — just change the file paths
renderer.RenderingOptions.CustomHyphenation = new CustomHyphenationDefinitions
{
    PatternSource = @"C:\patterns\hyph-fr.pat.txt",
    ExceptionSource = @"C:\patterns\hyph-fr.hyp.txt"
};

このため、``列挙型では対応していない言語において、特に有用です。現在、この列挙型は英語(米国)、英語(英国)、およびロシア語のみをサポートしています。

ローカルファイル制約とは何ですか?

表3: ローカルファイル制約
制約
許可される拡張子.txt, .pat
最大ファイルサイズ5 MB
エンコーディングUTF-8
コンテンツルール有効なハイフネーションパターンのみ — コメント、メタデータ、ヘッダー、TeXディレクティブ、またはエンコーディングノートは不要
拒否されたコンテンツバイナリファイル、ヌルバイトを含むファイル、<script>タグを含むファイル

バッチレンダリングにおけるキャッシングはパフォーマンスにどのように影響しますか?

カスタムハイフネーションパターンは、初回読み込み後にメモリにキャッシュされ、および の値をキーとして保存されます。 同じソースパスまたはURLを参照する後続のレンダリングは、キャッシュされたパターンを再ダウンロードまたは再読み込みせずに再利用します。

この動作には、大容量のPDFレンダリングワークフローにおける2つの実用的な意味があります:

パフォーマンス: 最初のレンダリングはI/Oコスト(ネットワークリクエストまたはディスク読み込み)を伴います。 その後のレンダリングは、パターン読み込みの観点から実質的に無料です。同じハイフネーション構成で数百のPDFを生成するバッチジョブの場合、オーバーヘッドはごくわずかです。

サイレントフェイルの持続: パターン読み込み中のエラーは例外を投げず、レンダラはハイフネーションなしで続行するため、最初のロードでの悪いパターンファイルやネットワークの失敗はバッチ全体を通じてサイレントに持続します。 その後のすべてのレンダリングもハイフネーションが不足し、追加のエラー信号はありません。 アプリケーションの起動時またはデプロイメント時にパターンファイルを検証し、URLのアクセス可能性を確認してください——レンダリング時ではなく。

キャッシュキーの識別子: キャッシュキーは、(および設定されている場合は )の正確な文字列値です。 同じURLまたはファイルパスを指す2つのレンダラインスタンスは、同じキャッシュされたパターンを共有します。 URLを変更すると、同じファイルの異なるバージョンであっても、新たにロードされます。

本番デプロイメント前にファイル内容を事前に検証してください。 パターンファイルには有効なハイフネーションテキストのみを含める必要があります。 コメント、TeXディレクティブ、エンコーディング宣言、または非パターンコンテンツが存在すると、統合が失敗します。 tex-hyphenリポジトリは、数十の言語のための事前構築されたクリーンなパターンファイルを提供します。

リモートパターンソースにはHTTPSを推奨します。 HTTPはサポートされていますが、ファイルコンテンツのトランスポートレイヤー保護を提供しません。


次のステップは何ですか?

プロパティの 属性は、-CODE-965--@@ プロパティは、TeX パターンファイルでサポートされているあらゆる言語の語句分割動作を直接制御します。これは、 を通じて利用可能な 3 つの組み込みプリセットの範囲を超えた機能を提供します。 パターンファイルはリモートURLまたはローカルパスから読み込まれ、初回使用後にメモリにキャッシュされます。読み込みに失敗した場合は、設定にフォールバックします。 エラーはログに記録されますが、スローされることはないため、パターン検証はレンダリング時ではなくデプロイメント時に行うべきです。

関連するIronPDFレンダリング構成については、以下を参照してください:

無料の30日間トライアルのIronPDFを入手して、ライブプロジェクトでカスタムハイフネーションを試し、または製品導入用のライセンスオプションを表示してください。

CustomHyphenationDefinitionsstring@@--CODE-974--@@@@--CODE-975--@@@@--CODE-976--@@@@--CODE-977--@@@@--CODE-978--@@@@--CODE-979--@@hyph-en-us.pat.txt@@--CODE-980--@@@@--CODE-981--@@@@--CODE-982--@@@@--CODE-983--@@

よくある質問

C#を使用してPDF生成でカスタムハイフネーションを実装するにはどうすればよいですか?

IronPDFを使用してPDF生成でカスタムハイフネーションを実装できます。URLまたはローカルファイルからTeXハイフネーションパターンをロードすることで、C#でPDFを生成する際に語の切り分けを制御できます。

TeXハイフネーションパターンとは何であり、それらはIronPDFでどのように使用されますか?

TeXハイフネーションパターンは、適切なハイフネーションポイントで語を切り分けるルールのセットです。IronPDFは、これらのパターンをロードして、生成されたPDFでの語のハイフネーションを管理することができます。

IronPDFでURLからハイフネーションパターンをロードできますか?

はい、IronPDFはURLから直接ハイフネーションパターンをロードすることをサポートしており、C# PDFプロジェクトでの動的で柔軟な語の切り分け構成を可能にします。

IronPDFでハイフネーションパターンにローカルファイルを使用することは可能ですか?

もちろん、IronPDFはローカルファイルからのカスタムハイフネーションパターンのロードを許可しており、PDF内の語のハイフネーションに対する正確な制御を提供します。

IronPDFでカスタムハイフネーションを使用する際の制約は何ですか?

IronPDFでカスタムハイフネーションを使用する際は、パターンが正しくフォーマットされており、意図した言語とドキュメントレイアウトの要件に適合していることを保証する必要があります。

私のPDFドキュメントでなぜカスタムハイフネーションが必要ですか?

カスタムハイフネーションは、特に複雑な言語固有の語の切り分けに対処する場合に、PDFドキュメントの可読性を向上させ、一貫したフォーマットを保証するために役立ちます。

IronPDFは、カスタムハイフネーションを実装するためのコード例を提供していますか?

はい、IronPDFは、C#プロジェクトでカスタムハイフネーションを実装しやすくするためのコード例を提供しており、PDF生成プロセスへのこの機能の統合を容易にします。

カスタムハイフネーションは、どのようにしてPDF生成を改善しますか?

カスタムハイフネーションは、語の切り分けに対する正確な制御を可能にし、異なる言語や形式にわたってドキュメントの外観と可読性を向上させることで、PDF生成を改善します。

Curtis Chau
テクニカルライター

Curtis Chauは、カールトン大学でコンピュータサイエンスの学士号を取得し、Node.js、TypeScript、JavaScript、およびReactに精通したフロントエンド開発を専門としています。直感的で美しいユーザーインターフェースを作成することに情熱を持ち、Curtisは現代のフレームワークを用いた開発や、構造の良い視覚的に魅力的なマニュアルの作成を楽しんでいます。

...
詳しく読む

準備はできましたか?

Nuget Downloads 20,667,543バージョン:2026.7リリースされたばかり

あなたの無料30日間の試用キーをすぐに入手。
クレジットカードやアカウントの作成は不要です。
PDF用C# NuGetライブラリ
NuGetでインストール

バージョン: 2026.7

PM > Install-Package IronPdf
nuget.org/packages/IronPdf/
  1. ソリューションエクスプローラーで参照を右クリックし、NuGetパッケージを管理を選択
  2. ブラウズを選択し、"IronPDF"を検索
  3. パッケージを選択してインストール
C# PDF DLL
DLLをダウンロード

バージョン: 2026.7

今すぐダウンロード

またはここからWindowsインストーラーをダウンロードする。

  1. IronPDFを~/Libsなどの場所に解凍し、ソリューションディレクトリ内に配置する
  2. Visual Studioソリューションエクスプローラーで参照を右クリックし、"IronPDF.dll"をブラウズして選択

ライセンスは$999から

Key in blue circle

無料の30日間トライアルキーをすぐに入手してください。

制限なし。100% ロック解除済み。クレジットカード不要。

bullet_checkedクレジットカードやアカウントの作成は不要です。制限なし。100% ロック解除済み。クレジットカード不要。
  • Logo Aetna
  • Logo NASA
  • Logo GE
  • Logo Porsche
  • Logo USDA
  • Logo Qatar
Join Millions of Engineers who’ve tried IronPDF
無料のライブデモを予約する
Booking Badge

世界中の数百万人のエンジニアから信頼されています。

ライセンスはより安く
義務のない相談を受ける
下記のフォームを記入するか、sales@ironsoftware.comにメールしてください。
あなたの詳細は常に守秘されます。
世界中の数百万人のエンジニアから信頼されています。
ライセンスはより安く
あなたの無料30日間の試用キーをすぐに入手。
クレジットカードやアカウントの作成は不要です。