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

This article was translated from English: Does it need improvement?
Translated
View the article in English

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

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

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

このガイドは、ローカルおよびリモートパターンの読み込み、フォールバック動作、制限、エラーハンドリング、キャッシングを含め、C#でCustomHyphenationDefinitions APIを使用する方法を説明します。


NuGet 購入の準備ができていませんか?

PM >  Install-Package IronPdf

IronPDFNuGet でチェックしてください。1000万回以上のダウンロードで、C#によるPDF開発を変革しています。 DLL または Windowsインストーラー をダウンロードすることもできます。

クイックスタート

  1. IronPDF をNuGetパッケージマネージャでインストール

    PM > Install-Package IronPdf
  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");
  3. 実際の環境でテストするためにデプロイする

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

    arrow pointer

最小限のワークフロー

  1. IronPDF NuGetパッケージをインストールする
  2. ChromePdfRendererインスタンスを作成します
  3. PatternSourceパスまたはURLを設定します
  4. HTMLコンテンツのCSSにhyphens: autoを含めます
  5. RenderHtmlAsPdfを呼び出し、結果を保存します

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

CustomHyphenationDefinitionsクラスは、IronPDFがレンダリングプロセス中にハイフネーションルールを読み込む場所を定義します。 Chromiumエンジンはこれらのパターンを読み込み、HTML要素にCSS hyphens: auto ルールが存在する場合にそれらを適用します。

CustomHyphenationDefinitionsクラスとは何か?

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

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

パターンファイルは、GitHubのtex-hyphenプロジェクトによって維持されるTeXハイフネーションフォーマットに従います。 各言語にはレポジトリに2つのファイルがあります: パターンルール用のhttps://raw.githubusercontent.com/で始まる生のコンテンツURLが必要です - 標準のGitHubページURLはHTMLを返し、パターンテキストではありません。

カスタムハイフネーションはデフォルトの言語設定をどのように上書きするのか?

ChromePdfRenderOptionsに組み込みの英語(米国)、英語(英国)、ロシア語用のプリセットを提供します。 CustomHyphenationプロパティは、両方設定されている場合、明確な優先度チェーンに従ってこのEnumよりも優先されます。

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

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

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

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

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


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

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

この動作は高ボリュームPDFレンダリングワークフローにおいて2つの実用的な意味を持ちます。

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

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

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

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

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


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

ChromePdfRenderOptions上のCustomHyphenationプロパティは、TeXパターンファイルがサポートする任意の言語の単語分割動作を直接制御可能にします — PdfHyphenationLanguageで利用できる3つの組み込みプリセットを超えて拡張します。 パターンファイルはリモートURLまたはローカルパスから読み込まれ、初回使用後にメモリにキャッシュされ、ロードに失敗するとHyphenationLanguage設定にフォールバックします。 エラーはログに記録されますが、スローされることはないため、パターン検証はレンダリング時ではなくデプロイメント時に行うべきです。

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

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

Ahmad Sohail
フルスタックデベロッパー

Ahmadは、C#、Python、およびウェブ技術に強い基盤を持つフルスタック開発者です。彼はスケーラブルなソフトウェアソリューションの構築に深い関心を持ち、デザインと機能が実際のアプリケーションでどのように融合するかを探求することを楽しんでいます。

Iron Softwareチームに参加する前、Ahmadは自動化プロジェクトやAPI統合に取り組み、パフォーマンスの向上と開発者の体験向上に注力してきました。

彼の自由時間には、UI/UXのアイデアを試したり、オープンソースツールに貢献したり、時折テクニカルライティングやドキュメンテーションに取り組んで、複雑なトピックを理解しやすくすることを目指しています。

準備はできましたか?
Nuget ダウンロード 18,135,201 | バージョン: 2026.4 リリース
Still Scrolling Icon

まだスクロールしていますか?

すぐに証拠が欲しいですか? PM > Install-Package IronPdf
サンプルを実行するHTML が PDF に変換されるのを確認します。