如何使用 WaitFor 來延遲 C# PDF 渲染

Using the C# WaitFor Class to Delay PDF Rendering

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

IronPDF 中的 C# WaitFor 類別可協助開發人員延遲 PDF 渲染,直至所有資源、字型及 JavaScript 皆已載入,透過 NetworkIdle 及 JavaScript 觸發器等方法,避免渲染不完整的情況。

快速入門:使用 WaitFor 來改善 PDF 渲染效果

IronPDF 的 WaitFor 功能讓開發人員能透過管理非同步時序來改善 PDF 渲染效果。 透過設定 RenderDelay 等選項,可確保所有資源與腳本在轉換前皆已載入,避免產生不完整的 PDF 文件。 本指南將說明如何在您的專案中實作 WaitFor,以實現精確且高效的渲染效果。

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

何謂 WaitFor 類別及其選項?

為了以最佳效能渲染 PDFWaitFor 類別可優化 PDF 渲染流程。 來自 RenderOptionsWaitFor 物件提供以下幾種選項:

  • PageLoad:無等待的預設渲染。
  • RenderDelay:設定任意的等待時間。
  • Fonts:等待所有字型載入完成。
  • JavaScript:透過 JavaScript 函式觸發渲染。
  • HTML elements:等待特定的 HTML 元素,例如元素 ID、名稱、標籤名稱及查詢選擇器,以鎖定目標元素。
  • NetworkIdle:等待網路閒置(0、2 或自訂時間)。

這些功能適用於使用 IronPDFHTML 字串轉換為 PDF將 HTML 檔案轉換為 PDF,以及將網頁 URL 轉換為 PDF

如何立即渲染 PDF 而不需等待?

預設情況下,頁面載入完成後會立即進行渲染。 在正常渲染的情況下,無需呼叫 `` 方法。 此方法適用於不含複雜 JavaScript 或外部資源的簡單 HTML 內容。

:path=/static-assets/pdf/content-code-examples/how-to/waitfor-pageload.cs
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>");
Imports IronPdf

Dim renderer As New ChromePdfRenderer()

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

Dim pdf As PdfDocument = renderer.RenderHtmlAsPdf("<h1>testing</h1>")
$vbLabelText   $csharpLabel

如何在 PDF 渲染前加入自訂延遲?

若在渲染 PDF/A 之前需要特定的延遲時間,您可以設定任意數值的毫秒數作為延遲時間。 這為特定時間需求提供了靈活性,特別是在處理大量 JavaScript 內容時。

此選項的運作方式與舊版實作相同,皆使用 屬性。 然而,該舊版屬性已遭廢棄。 請使用新 API:

:path=/static-assets/pdf/content-code-examples/how-to/waitfor-delay-time.cs
using IronPdf;

ChromePdfRenderer renderer = new ChromePdfRenderer();

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

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

Private renderer As New ChromePdfRenderer()

' Render after 3000ms
renderer.RenderingOptions.WaitFor.RenderDelay(3000)

Dim pdf As PdfDocument = renderer.RenderHtmlAsPdf("<h1>testing</h1>")
$vbLabelText   $csharpLabel

當您的 HTML 包含動畫、延遲載入的內容,或需要時間來生成動態內容時,延遲機制便十分有用。 針對複雜的渲染情境,請探索自訂渲染選項

如何在渲染前等待所有字型載入完畢?

類別中的 方法會暫停 PDF 渲染,直到所有字型(例如來自 Google Fonts 等外部來源的字型)皆已載入為止。 這可確保最終產出的 PDF 包含所有必要的字型,從而保留文件原有的排版與視覺呈現效果。 此功能可確保 Professional PDF 輸出品質

:path=/static-assets/pdf/content-code-examples/how-to/waitfor-all-fonts.cs
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);
Imports IronPdf

Dim htmlContent As String = "
<!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>"

Dim renderer As New ChromePdfRenderer()
renderer.RenderingOptions.WaitFor.AllFontsLoaded(10000)

Dim pdf As PdfDocument = renderer.RenderHtmlAsPdf(htmlContent)
$vbLabelText   $csharpLabel

如需進一步了解 PDF 中的字型管理(包括嵌入與子集選項),請參閱 PDF 字型管理指南。

如何使用自訂 JavaScript 觸發 PDF 渲染?

若需更精細地控制渲染流程,您可以指定一個自訂 JavaScript 函式,該函式將在渲染 PDF 文件之前執行。 這使您能夠在啟動渲染流程之前執行必要的任務或檢查,讓您能掌控何時觸發渲染。

在 JavaScript 中,函式 會觸發渲染任務。 一旦 被呼叫,渲染過程即會開始。 您可以自行決定何時呼叫該函式。

:path=/static-assets/pdf/content-code-examples/how-to/waitfor-javascript.cs
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 元素?

在此選項下,渲染過程會等待特定的 HTML 元素(例如元素 ID、名稱、標籤名稱及查詢選擇器)以鎖定目標元素。 此功能在處理單頁應用程式 (SPAs) 或異步載入的內容時特別有用。

如何根據 ID 等待一個元素?

在以下程式碼範例中,渲染過程會等待特定元素的 ID。

:path=/static-assets/pdf/content-code-examples/how-to/waitfor-html-element-id.cs
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);
Imports IronPdf

Dim htmlContent As String = "
<!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>"

Dim renderer As New ChromePdfRenderer()
renderer.RenderingOptions.WaitFor.HtmlElementById("myid", 5000)

Dim pdf As PdfDocument = renderer.RenderHtmlAsPdf(htmlContent)
$vbLabelText   $csharpLabel

如何根據 name 屬性等待一個元素?

在以下程式碼範例中,渲染過程會等待特定元素名稱。

:path=/static-assets/pdf/content-code-examples/how-to/waitfor-html-element-id.cs
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);
Imports IronPdf

Dim htmlContent As String = "
<!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>"

Dim renderer As New ChromePdfRenderer()
renderer.RenderingOptions.WaitFor.HtmlElementById("myid", 5000)

Dim pdf As PdfDocument = renderer.RenderHtmlAsPdf(htmlContent)
$vbLabelText   $csharpLabel

如何根據標籤名稱等待元素?

在以下程式碼範例中,渲染過程會等待特定元素標籤名稱。

:path=/static-assets/pdf/content-code-examples/how-to/waitfor-html-element-tag-name.cs
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);
Imports IronPdf

Dim htmlContent As String = "
<!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>"

Dim renderer As New ChromePdfRenderer()
renderer.RenderingOptions.WaitFor.HtmlElementByTagName("h2", 5000)

Dim pdf As PdfDocument = renderer.RenderHtmlAsPdf(htmlContent)
$vbLabelText   $csharpLabel

如何使用查詢選擇器來等待元素?

渲染過程會等待下方程式碼範例中查詢選擇器所選取的元素。 方法會等待一個img 標籤且具有id 為 'myid'以及class 為 'blablastyle'img 標籤@@--

:path=/static-assets/pdf/content-code-examples/how-to/waitfor-html-element-query-selector.cs
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);
Imports IronPdf

Dim htmlContent As String = "
<!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>"

Dim renderer As New ChromePdfRenderer()
renderer.RenderingOptions.WaitFor.HtmlQuerySelector("img#myid.blablastyle", 5000)

Dim pdf As PdfDocument = renderer.RenderHtmlAsPdf(htmlContent)
$vbLabelText   $csharpLabel

如何等待網路活動完成?

在渲染會進行資源、資料或 API 呼叫等網路請求的網頁時,請確保所有網路活動均已完成後,再產生 PDF 檔案。 IronPDF 提供多種方法來處理不同的網路情境。

何時應等待網路活動歸零?

此類網路閒置狀態會等待直至沒有網路活動,這通常表示內容已完全載入。 此方案適用於單頁應用程式 (SPAs) 或不含長輪詢網路請求或持續網路活動的簡單網頁。

當網路活動停滯至少 500 毫秒後,渲染程序即會開始。

:path=/static-assets/pdf/content-code-examples/how-to/waitfor-network-idle-0.cs
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>");
Imports IronPdf

Dim renderer As New ChromePdfRenderer()

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

Dim pdf As PdfDocument = renderer.RenderHtmlAsPdf("<h1>testing</h1>")
$vbLabelText   $csharpLabel

何時應允許兩項網路活動?

`` 方法適用於採用長輪詢網路請求或心跳訊號的網頁應用程式或網頁。 通常涉及 1 至 2 項請求。 即使這些請求正在執行中,也不會使網路閒置事件的觸發失效,因為最多有兩個請求是可接受的。

在啟動渲染程序之前,系統中應僅剩最多兩項網路活動,且這些活動的持續時間需至少達 500 毫秒。 此選項提供快速設定,用於處理固定數量的網路活動。

:path=/static-assets/pdf/content-code-examples/how-to/waitfor-network-idle-2.cs
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>");
Imports IronPdf

Dim renderer As New ChromePdfRenderer()

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

Dim pdf As PdfDocument = renderer.RenderHtmlAsPdf("<h1>testing</h1>")
$vbLabelText   $csharpLabel

如何自訂網路活動閾值?

當涉及多個網路請求時,您可以自訂網路閒置時間長度,以及不致使網路閒置事件失效的允許網路請求數量。 此選項適用於具有特定需求、且不適用於前兩種方法的網頁應用程式或網頁。 此客製化方案可因應不同情境下的廣泛應用場景。

:path=/static-assets/pdf/content-code-examples/how-to/waitfor-customize-network.cs
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>");
Imports IronPdf

Private renderer As New ChromePdfRenderer()

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

Dim pdf As PdfDocument = renderer.RenderHtmlAsPdf("<h1>testing</h1>")
$vbLabelText   $csharpLabel

在處理維持持久連線或具有可預測背景網路活動模式的複雜網路應用程式時,此程度的客製化將極具價值。

如何設定最大等待時間?

以及 方法允許您設定最大等待時間,以確保等待不會無限期持續。這些方法中的 `` 參數即用於此目的。 這可防止您的應用程式在預期條件永遠不會發生時無限期卡住。

所有指定的時間值均以毫秒為單位。

在實施這些等待策略時,請在確保內容完整載入與維持合理效能之間取得平衡。 對於需要精確時間控制的應用,請探索非同步 PDF 生成技術

準備好探索更多可能性了嗎? 請在此處查看教學頁面:進階功能,或探索使用 IronPDF 建立 PDF 檔案以掌握更多進階技巧。

常見問題

什麼是 WaitFor 類別?我為什麼應該使用它?

IronPDF 中的 WaitFor 類別允許開發人員延遲 PDF 渲染,直到所有資源、字型和 JavaScript 皆已載入完畢。此舉可避免渲染不完整,並確保複雜網頁在轉換為 PDF 之前已完全載入,從而產生更精確且完整的 PDF 文件。

WaitFor 提供了哪些不同的選項?

IronPDF 的 WaitFor 類別提供多種選項:PageLoad(預設立即渲染)、RenderDelay(自訂延遲時間,單位為毫秒)、Fonts(等待所有字型載入完畢)、JavaScript(透過 JavaScript 函式觸發渲染)、HTML elements(根據 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 驅動網站。

Curtis Chau
技術撰稿人

Curtis Chau 擁有卡爾頓大學(Carleton University)的電腦科學學士學位,專精於前端開發,並精通 Node.js、TypeScript、JavaScript 及 React。他熱衷於打造直觀且美觀的用戶介面,喜歡運用現代框架,並創建結構完善、視覺上吸引人的手冊。

除了開發工作之外,Curtis 對物聯網(IoT)抱有濃厚興趣,致力於探索整合硬體與軟體的創新方法。閒暇時,他喜歡玩遊戲和開發 Discord 機器人,將對科技的熱愛與創意相結合。

準備開始了嗎?
Nuget 下載 19,014,616 | 版本: 2026.5 just released
Still Scrolling Icon

還在往下捲動嗎?

想要快速確認成果嗎? PM > Install-Package IronPdf
執行範例 觀看您的 HTML 轉為 PDF。