IRONSOFTWAREHOME

Using the C# WaitFor Class to Delay PDF Rendering

Curtis Chau
Curtis Chau
Updated: 2026年9月5日

IronPDFのC# WaitFor クラスは、すべてのアセット、フォント、JavaScriptが読み込まれるまでPDFレンダリングを遅延させ、NetworkIdle、JavaScriptトリガーなどのメソッドを使用して不完全なレンダリングを防ぎます。

クイックスタート: PDFレンダリングを改善するためのWaitForの使用

IronPDFのWaitFor機能は、非同期のタイミングを管理することでPDFレンダリングを改善します。 RenderDelayのようなオプションを設定することで、変換前にすべてのアセットとスクリプトがロードされることを保証し、不完全なPDF文書を防ぐことができます。 このガイドは、プロジェクトでWaitForを実装して、正確かつ効率的なレンダリングを実現する方法を示しています。

new IronPdf.ChromePdfRenderer { RenderingOptions = { WaitFor = IronPdf.WaitFor.RenderDelay(3000) } }
    .RenderUrlAsPdf("https://example.com")
    .SaveAs("output.pdf");

WaitForクラスとそのオプションとは?

最適なパフォーマンスでPDFをレンダリングするために、WaitForクラスはPDFレンダリングプロセスを改善します。 WaitForオブジェクトは、いくつかのオプションを提供します。

  • PageLoad: 待ち時間なしでのデフォルトレンダリングです。
  • RenderDelay: 任意の待ち時間を設定します。
  • Fonts: すべてのフォントが読み込まれるまで待ちます。
  • JavaScript: JavaScript関数を使用してレンダリングをトリガーします。
  • HTML elements: 特定のHTML要素(要素ID、名前、タグ名、クエリセレクタなど)を対象に待ちます。
  • NetworkIdle: ネットワークアイドルを待ちます(0、2、またはカスタム量)。

これらの機能はHTML文字列をIronPDFでPDFに変換、HTMLファイルをIronPDFでPDFに変換、WebのURLをIronPDFでPDFに変換するときに機能します。

PDFを待たずにすぐにレンダリングするには?

デフォルトでは、レンダリングはページの読み込み終了直後に行われます。 PageLoadメソッドは通常のレンダリングには呼び出す必要がありません。 このアプローチは、複雑なJavaScriptや外部リソースを使用しないシンプルなHTMLコンテンツに適しています。

using IronPdf;

ChromePdfRenderer renderer = new ChromePdfRenderer();

// Render as soon as the page is loaded
renderer.RenderingOptions.WaitFor.PageLoad();

PdfDocument pdf = renderer.RenderHtmlAsPdf("<h1>testing</h1>");

PDFレンダリングの前にカスタム遅延を追加するにはどうすればよいですか?

PDFをレンダリングする前に特定の遅延が必要な場合、任意のミリ秒数を遅延として設定することができます。 特に、JavaScriptを多用したコンテンツを扱う場合は、特定のタイミングでの要件に柔軟に対応できます。

このオプションは、RenderingOptions.RenderDelayプロパティを使用する古い実装と同じように動作します。 ただし、旧プロパティは非推奨です。 新しいAPIを使用: RenderingOptions.WaitFor.RenderDelay。

using IronPdf;

ChromePdfRenderer renderer = new ChromePdfRenderer();

// Render after 3000ms
renderer.RenderingOptions.WaitFor.RenderDelay(3000);

PdfDocument pdf = renderer.RenderHtmlAsPdf("<h1>testing</h1>");

遅延メカニズムは、HTMLにアニメーションや遅延ロードされたコンテンツが含まれている場合や、動的なコンテンツ生成に時間がかかる場合に便利です。 複雑なレンダリング シナリオについては、カスタム レンダリング オプションを参照してください。

レンダリング前にすべてのフォントが読み込まれるまで待つにはどうすればよいですか?

AllFontsLoadedメソッドは、Google Fontsのような外部ソースからすべてのフォントを読み込むまでPDFレンダリングを一時停止します。 これにより、最終的なPDFには必要なフォントがすべて含まれ、文書の意図するタイポグラフィと視覚的な外観が保たれます。 この機能は、IronPDF出力品質を維持します。

using IronPdf;

string htmlContent = @"
<!DOCTYPE html>
<html lang=""en"">
<head>
  <meta charset=""UTF-8"">
  <title>Test Registration of Extension</title>
  <!-- for google web fonts -->
  <link rel=""preconnect"" href=""https://fonts.googleapis.com"">
  <link rel=""preconnect"" href=""https://fonts.gstatic.com"" crossorigin>
  <link rel=""stylesheet"" href=""https://fonts.googleapis.com/css2?family=Roboto:wght@400;700&display=swap"" >

  <style>
  /* for remote fonts */
  @font-face {
    font-family: 'CustomFont';
    src: url('https://stage.gradfinale.co.uk/tcpdf/fonts/avgr65wttf.ttf');
  }
  p#p1 { font-family: CustomFont, sans-serif; }

  /* for local fonts */
  @font-face {
    font-family: 'LocalCustomFont';
    src: local('Arial');
  }
  p#p3 { font-family: LocalCustomFont, sans-serif; }
  </style>
</head>
<body>
	<h1>This is Delayed Render Test!</h1>
	<p style=""font-family: Roboto, monospace;"">Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nulla scelerisque ligula venenatis erat <strong>scelerisque</strong> auctor.</p>
	<p id=""p1"">Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nulla scelerisque ligula venenatis erat <strong>scelerisque</strong> auctor.</p>
	<p id=""p3"">Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nulla scelerisque ligula venenatis erat <strong>scelerisque</strong> auctor.</p>
</body>
</html>)";

ChromePdfRenderer renderer = new ChromePdfRenderer();
renderer.RenderingOptions.WaitFor.AllFontsLoaded(10000);

PdfDocument pdf = renderer.RenderHtmlAsPdf(htmlContent);

埋め込みオプションやサブセットオプションなど、PDFのフォント管理に関する詳細については、managing fonts in PDFsのガイドをご覧ください。

カスタム JavaScript を使用して PDF レンダリングをトリガーするには?

レンダリングプロセスをより細かく制御するために、PDF文書をレンダリングする前に実行するカスタムJavaScript関数を指定することができます。 これにより、レンダリングプロセスを開始する前に必要なタスクやチェックを実行できるようになり、レンダリングをトリガーするタイミングを制御できるようになります。

JavaScriptでは、window.ironpdf.notifyRender()関数がレンダリングタスクをトリガーします。 notifyRender()が起動されると、レンダリングプロセスが開始されます。 関数を呼び出すタイミングは自分でコントロールします。

using IronPdf;

string html = @"<!DOCTYPE html>
<html>
<body>
<h1>Testing</h1>
<script type='text/javascript'>

// Set delay
setTimeout(function() {
    window.ironpdf.notifyRender();
}, 1000);

</script>
</body>
</html>";

ChromePdfRenderOptions renderingOptions = new ChromePdfRenderOptions();

// Set rendering to wait for the notifyRender function
renderingOptions.WaitFor.JavaScript(5000);

PdfDocument pdf = ChromePdfRenderer.StaticRenderHtmlAsPdf(html, renderingOptions);
JavaScript

このアプローチは、AJAXリクエストと組み合わせたり、動的に生成されたコンテンツがレンダリング前に完全に読み込まれるようにしたりする場合に効果的です。 高度なJavaScriptのシナリオについては、PDFでカスタムJavaScriptを実行するのガイドを参照してください。

レンダリング前に特定の HTML 要素を待つにはどうすればよいですか?

このオプションを使用すると、レンダリングプロセスは、要素ID、名前、タグ名、クエリセレクタなどの特定のHTML要素をターゲット要素として待機します。 この機能は、シングル・ページ・アプリケーション(SPA)や非同期に読み込まれるコンテンツを扱う際に役立ちます。

IDで要素を待つにはどうすればよいですか?

以下のコード例では、レンダリングは特定の要素IDを待ちます。

using IronPdf;

string htmlContent = @"
<!DOCTYPE html>
<html lang=""en"">
<head>
  <meta charset=""UTF-8"">
  <title>Delayed render tests</title>
  <script type=""text/javascript"">
	setTimeout(function() {
		var h1Tag = document.createElement(""h1"");
		h1Tag.innerHTML = ""bla bla bla"";
		h1Tag.setAttribute(""id"", ""myid"");

        var block = document.querySelector(""div#x"");
		block.appendChild(h1Tag);
	}, 1000);
  </script>
</head>
<body>
	<h1>This is Delayed Render Test!</h1>
    <div id=""x""></div>
</body>
</html>";

ChromePdfRenderer renderer = new ChromePdfRenderer();
renderer.RenderingOptions.WaitFor.HtmlElementById("myid", 5000);

PdfDocument pdf = renderer.RenderHtmlAsPdf(htmlContent);

名前属性で要素を待つにはどうすればよいですか?

以下のコード例では、レンダリングプロセスが特定の要素名を待ちます。

using IronPdf;

string htmlContent = @"
<!DOCTYPE html>
<html lang=""en"">
<head>
  <meta charset=""UTF-8"">
  <title>Delayed render tests</title>
  <script type=""text/javascript"">
	setTimeout(function() {
		var h1Tag = document.createElement(""h1"");
		h1Tag.innerHTML = ""bla bla bla"";
		h1Tag.setAttribute(""id"", ""myid"");

        var block = document.querySelector(""div#x"");
		block.appendChild(h1Tag);
	}, 1000);
  </script>
</head>
<body>
	<h1>This is Delayed Render Test!</h1>
    <div id=""x""></div>
</body>
</html>";

ChromePdfRenderer renderer = new ChromePdfRenderer();
renderer.RenderingOptions.WaitFor.HtmlElementById("myid", 5000);

PdfDocument pdf = renderer.RenderHtmlAsPdf(htmlContent);

タグ名で要素を待つにはどうすればよいですか?

以下のコード例では、レンダリングプロセスが特定の要素タグ名を待ちます。

using IronPdf;

string htmlContent = @"
<!DOCTYPE html>
<html lang=""en"">
<head>
  <meta charset=""UTF-8"">
  <title>Delayed render tests</title>
  <script type=""text/javascript"">
	setTimeout(function() {
		var newElem = document.createElement(""h2"");
		newElem.innerHTML = ""bla bla bla"";

        var block = document.querySelector(""div#x"");
		block.appendChild(newElem);
	}, 1000);
  </script>
</head>
<body>
	<h1>This is Delayed Render Test!</h1>
    <div id=""x""></div>
</body>
</html>";

ChromePdfRenderer renderer = new ChromePdfRenderer();
renderer.RenderingOptions.WaitFor.HtmlElementByTagName("h2", 5000);

PdfDocument pdf = renderer.RenderHtmlAsPdf(htmlContent);

クエリ セレクタを使用して要素を待機するにはどうすればよいですか?

レンダリングプロセスは、以下のコード例のクエリセレクタで選択された要素を待ちます。 class of 'blablastyle'があるときに待ちます。

using IronPdf;

string htmlContent = @"
<!DOCTYPE html>
<html lang=""en"">
<head>
  <meta charset=""UTF-8"">
  <title>Test Registration of Extension</title>
  <script type=""text/javascript"">
	setTimeout(function() {
		var img = document.createElement(""img"");
		img.onload = function() {
			img.setAttribute(""id"", ""myid"");
			img.setAttribute(""class"", ""blablastyle"");
			var block = document.getElementById(""x"");
			block.appendChild(img);
		};
		img.src = ""https://www.w3schools.com/images/picture.jpg"";	// .src after .onload to ignore cached, if any
	}, 1000);
  </script>
</head>
<body>
	<h1>This is Delayed Render Test!</h1>
    <div id=""x""></div>
</body>
</html>";

ChromePdfRenderer renderer = new ChromePdfRenderer();
renderer.RenderingOptions.WaitFor.HtmlQuerySelector("img#myid.blablastyle", 5000);

PdfDocument pdf = renderer.RenderHtmlAsPdf(htmlContent);

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

Milan Jovanovic

Microsoft MVP

ケーススタディを見る

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

Brent Matzelle

最高技術責任者, OPYN

ケーススタディを見る

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

David Jones

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

ケーススタディを見る

ネットワーク アクティビティが完了するまでどのように待てばよいですか?

リソース、データ、APIコールに対してネットワークリクエストを行うWebページをレンダリングするときは、PDFを生成する前にすべてのネットワークアクティビティが完了するようにしてください。 IronPDFは異なるネットワークシナリオに対応するためにいくつかの方法を提供します。

いつネットワーク アクティビティがゼロになるのを待つべきですか?

このタイプのネットワークアイドルは、ネットワークのアクティビティがなくなるまで待機し、通常はコンテンツが完全にロードされたことを示します。 シングルページ・アプリケーション(SPA)や、長時間のネットワーク・リクエストや継続的なネットワーク・アクティビティを伴わないシンプルなウェブページに適しています。

レンダリングプロセスは、少なくとも500msの間、継続的なネットワークアクティビティがない場合に開始されます。

using IronPdf;

ChromePdfRenderer renderer = new ChromePdfRenderer();

// Render unless there has been no network activity for at least 500ms
renderer.RenderingOptions.WaitFor.NetworkIdle0();

PdfDocument pdf = renderer.RenderHtmlAsPdf("<h1>testing</h1>");

いつ2つのネットワーク活動を許可すべきですか?

NetworkIdle2メソッドは、ロングポーリングネットワークリクエストやハートビートピンを持つウェブアプリケーションやウェブページに適しています。 通常、1~2件の依頼があります。 これらのリクエストが継続中であっても、ネットワーク・アイドル・イベントのトリガーが無効になることはありません。

レンダリングプロセスを開始する前に、少なくとも二つのネットワークアクティビティが残り、少なくとも 500ms 継続している必要があります。 このオプションは、一定数のネットワーク・アクティビティを処理するための迅速な設定を提供します。

using IronPdf;

ChromePdfRenderer renderer = new ChromePdfRenderer();

// Render unless there are at most 2 network activities for at least 500ms
renderer.RenderingOptions.WaitFor.NetworkIdle2();

PdfDocument pdf = renderer.RenderHtmlAsPdf("<h1>testing</h1>");

ネットワーク アクティビティのしきい値をカスタマイズするには?

複数のネットワークリクエストが関係している場合、ネットワークアイドル時間とネットワークアイドルイベントを無効にしない許容ネットワークリクエスト数の両方をカスタマイズできます。 このオプションは、前の2つの方法に当てはまらない、特定の要件を持つウェブアプリケーションやウェブページに適しています。 このカスタマイズは、さまざまな状況下での幅広いユースケースに対応します。

using IronPdf;

ChromePdfRenderer renderer = new ChromePdfRenderer();

// Render unless there are at most 5 network activities for at least 1000ms
renderer.RenderingOptions.WaitFor.NetworkIdle(1000, 5);

PdfDocument pdf = renderer.RenderHtmlAsPdf("<h1>testing</h1>");

このレベルのカスタマイズは、持続的な接続を維持したり、バックグラウンドのネットワーク活動パターンが予測可能な複雑なWebアプリケーションを扱う場合に価値があります。

最大待ち時間を設定するにはどうすればよいですか?

maxWaitTimeパラメータがその目的を果たします。 これにより、期待される条件が発生しなかった場合、アプリケーションがいつまでもハングアップするのを防ぐことができます。

指定された時間値はすべてミリ秒です。

このような待機戦略を実施する場合は、コンテンツの完全な読み込みを確保することと、妥当なパフォーマンスを維持することのバランスをとりましょう。 正確なタイミング制御を必要とするアプリケーションについては、asyncPDF生成テクニックを探求してください。

次に何ができるのかを見てみましょうか? チュートリアルページはこちら:追加機能や、より高度なテクニックについてはIronPDFでPDFを作成するをご覧ください。

よくある質問

WaitForクラスとは何ですか?

IronPDFのWaitForクラスにより、開発者はすべてのアセット、フォント、JavaScriptの読み込みが終わるまでPDFのレンダリングを遅らせることができます。これは不完全なレンダリングを防ぎ、複雑なウェブページがPDFに変換される前に完全にロードされることを保証します。

どのようなWaitForオプションがありますか?

IronPDFのWaitForクラスにはいくつかのオプションがあります:PageLoad(デフォルトは即時レンダリング)、RenderDelay(ミリ秒単位のカスタム遅延)、Fonts(すべてのフォントがロードされるまで待機)、JavaScript(JavaScript関数でレンダリングをトリガー)、HTML要素(ID、名前、タグ、クエリーセレクタで特定の要素を待機)、NetworkIdle(ネットワーク活動が停止するまで待機)。

PDFレンダリングの前にカスタム遅延を追加するにはどうすればよいですか?

IronPDFのRenderDelayメソッドを使ってカスタム遅延を追加することができます。遅延をミリ秒単位で指定するだけです:`new ChromePdfRenderer { RenderingOptions = { WaitFor = WaitFor.RenderDelay(3000) } }.}`.これは、JavaScriptを多用するコンテンツで、実行に時間がかかる場合に特に便利です。

特定のHTML要素がレンダリング前に読み込まれるのを待つことはできますか?

はい、IronPDFは要素ID、名前、タグ名、クエリーセレクタを使って特定のHTML要素を待機させることができます。これにより、PDF変換が始まる前に重要なコンテンツがページ上に存在することが保証され、最終的なPDFドキュメントの要素の欠落を防ぐことができます。

NetworkIdleとは何ですか?

IronPDFのNetworkIdleはPDFをレンダリングする前にネットワークの活動が停止するのを待ちます。0、2、またはカスタム数のネットワーク接続を待つように設定できます。これはAJAXコールや他の非同期ネットワークリクエストによって動的にコンテンツをロードするページに最適です。

JavaScriptからPDFレンダリングをトリガーするには?

IronPDFのWaitFor JavaScriptオプションにより、JavaScript関数からレンダリングプロセスをトリガーすることができます。これにより、PDF生成のタイミングを完全に制御することができ、正確なタイミング制御が必要な単一ページのアプリケーションや複雑なJavaScript駆動のWebサイトに最適です。

How can I set a maximum waiting time for rendering a PDF in IronPDF?

You can set a maximum waiting time when using methods like `JavaScript`, `NetworkIdle`, `NetworkIdle0`, and `NetworkIdle2` in IronPDF. This prevents indefinite waiting by specifying a maximum duration to wait for conditions to be met.

Is it possible to customize network activity thresholds in IronPDF?

Yes, IronPDF allows you to customize the number of allowable network activities and the duration before considering the network idle. This flexibility is particularly useful for handling complex web applications with persistent network connections.

What happens when using the default `PageLoad` method in IronPDF?

The `PageLoad` method in IronPDF initiates rendering immediately after the HTML page finishes loading, without any delays. This approach is best for simple HTML content without additional asynchronous resources.

How does IronPDF handle PDF rendering for JavaScript-heavy content?

For JavaScript-heavy content, IronPDF allows setting explicit delays and waiting for specific JavaScript events to ensure all scripts and dynamic elements are fully processed and available before rendering the PDF.

Curtis Chau
テクニカルライター

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

...
詳しく読む

準備はできましたか?

Nuget Downloads 21,105,021バージョン:2026.9リリースされたばかり

無料をゲット

30日間の試用キーをすぐに取得。

bullet_checkedクレジットカードやアカウントの作成は不要です。
bullet_test製品版でのテスト
透かしなし
bullet_calendar30日間
完全機能の製品
bullet_support試用期間中の
24/5テクニカルサポート
あなたの無料30日間の試用キーをすぐに入手。
クレジットカードやアカウントの作成は不要です。
PDF用C# NuGetライブラリ
NuGetでインストール

バージョン: 2026.9

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

バージョン: 2026.9

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

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

ライセンスは$999から

Key in blue circle

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

Your trial license will be sent to your email address

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

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

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

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

バージョン: 2026.9

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

バージョン: 2026.9

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

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

ライセンスは$999から