Set Fonts in PDFs with IronPDF C
IronPDF 讓 C# 開發人員能夠從 HTML 建立包含自訂網頁字型和圖示字型的 PDF 檔案。 它透過 CSS @font-face 規則,同時支援 Google Fonts 等外部字型服務與本機字型檔案,確保所有生成的 PDF 文件在排版上保持一致。
網路字型是一種專為網站使用而設計的特殊字型。 這些字型託管於網路伺服器上,並由網頁瀏覽器下載,以確保無論使用者本地端是否具備相應字型,網站上的文字呈現皆能保持一致且視覺上美觀。 此外,圖示字型(icon fonts)運用符號與字形,常被用於網頁設計中,藉此建立可縮放且可自訂的圖示,並透過 CSS 操作維持視覺上一致的用戶介面。 借助 IronPDF 的字型管理功能,開發人員可輕鬆將這些字型整合至其 PDF 生成工作流程中。
CSS 支援網頁字型,讓您能在使用者造訪網站時指定要下載的字型檔案。 IronPDF 支援從 HTML 載入字型並渲染至 PDF,使其成為製作需符合特定品牌識別或排版標準之文件的理想選擇。 對於處理國際化內容的開發者,IronPDF 亦提供 UTF-8 及多國語言支援。
快速入門:在 PDF 生成中使用 WebFonts
using IronPDF 的 C# 函式庫,將網頁字型和圖示字型整合至您的 PDF 檔案中。 本指南將向您展示如何使用自訂字型渲染 HTML 內容,以確保產出的 PDF 檔案風格一致且視覺上令人愉悅。 只需使用 IronPDF 渲染 HTML,即可在數秒內儲存您的格式化文件。 開始之前,請確認您已在專案中安裝 IronPDF。
-
using NuGet 套件管理員安裝 https://www.nuget.org/packages/IronPdf
PM > Install-Package IronPdf -
請複製並執行此程式碼片段。
new IronPdf.ChromePdfRenderer { RenderingOptions = { WaitFor = IronPdf.Rendering.WaitFor.AllFontsLoaded(2000) } } .RenderHtmlAsPdf("<link href=\"https://fonts.googleapis.com/css?family=Lobster\" rel=\"stylesheet\">" + "<link href=\"https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.4.0/css/all.min.css\" rel=\"stylesheet\">" + "<p style=\"font-family:'Lobster', serif; font-size:30px;\">Hello Google Font</p>" + "<i class=\"fa fa-coffee\" style=\"font-size:40px; color:#b00;\"></i>") .SaveAs("webfonts-icons.pdf"); -
部署至您的生產環境進行測試
立即透過免費試用,在您的專案中開始使用 IronPDF
簡化工作流程(5 個步驟)
- 下載 C# 函式庫 IronPDF 以設定 PDF 中的字型
- 使用 HTML 從外部來源匯入或請求字型
- 延遲渲染過程以確保字型正確載入
- 如常將 HTML 轉換為 PDF
- 使用
@font-face規則
如何在 PDF 中使用網頁字型和圖示?
IronPDF 支援 WebFonts(例如 Google Fonts 和 Adobe Web Font API),以及 Bootstrap 和 FontAwesome 等所使用的圖示字型。 這項支援功能使 IronPDF 非常適合需要精緻排版效果的專案,從簡單的文件到包含品牌元素的複雜報告皆能勝任。
字型通常需要一段渲染延遲才能正確載入。 若字型未正確載入,可能會導致頁面空白且無任何文字顯示。 您可以透過為 WaitFor.AllFontsLoaded 方法設定最大等待時間,使其等待所有字型載入完成。 預設的最大等待時間為 500ms。 若涉及 JavaScript 或動態內容等更複雜的情境,請參閱我們的 HTML 轉 PDF 教學指南,其中涵蓋了進階的渲染技術。
以下是一個在您的專案中使用名為 Lobster 的 WebFont 的小範例。
:path=/static-assets/pdf/content-code-examples/how-to/webfonts-webicons-render-webfont.cs
using IronPdf;
// HTML contains webfont
var html = @"<link href=""https://fonts.googleapis.com/css?family=Lobster"" rel=""stylesheet"">
<p style=""font-family: 'Lobster', serif; font-size:30px;"" > Hello Google Fonts</p>";
ChromePdfRenderer renderer = new ChromePdfRenderer();
// Wait for font to load
renderer.RenderingOptions.WaitFor.AllFontsLoaded(2000);
// Render HTML to PDF
PdfDocument pdf = renderer.RenderHtmlAsPdf(html);
// Export the PDF
pdf.SaveAs("font-test.pdf");
Imports IronPdf
' HTML contains webfont
Private html = "<link href=""https://fonts.googleapis.com/css?family=Lobster"" rel=""stylesheet"">
<p style=""font-family: 'Lobster', serif; font-size:30px;"" > Hello Google Fonts</p>"
Private renderer As New ChromePdfRenderer()
' Wait for font to load
renderer.RenderingOptions.WaitFor.AllFontsLoaded(2000)
' Render HTML to PDF
Dim pdf As PdfDocument = renderer.RenderHtmlAsPdf(html)
' Export the PDF
pdf.SaveAs("font-test.pdf")
請在"類別文件"中探索更多 WaitFor 選項,例如字型、JavaScript、HTML 元素及網路閒置狀態等相關設定。 若需根據螢幕尺寸調整字型的響應式設計,請參閱我們關於 PDF 渲染響應式 CSS 的指南。
為什麼字型載入時間很重要?
若字型未正確載入,可能會導致頁面空白且無任何文字顯示。 您可以透過為 WaitFor.AllFontsLoaded 方法設定最大等待時間,使其等待所有字型載入完成。 預設的最大等待時間為 500ms。 此時間考量在處理複雜的網頁應用程式,或將 WebGL 內容渲染為 PDF 時尤為重要,因為這些情況下需要依序載入多個資源。
字型載入延遲會因多種因素而異,包括網路速度、字型檔案大小及伺服器回應時間。當使用多個自訂字型或圖示庫時,建議延長等待時間,以確保所有字型都能正確顯示。 這對於專業文件尤為關鍵,因為字型缺失可能影響可讀性與品牌一致性。
支援哪些字型服務?
IronPDF 支援 WebFonts(例如 Google Fonts 和 Adobe Web Font API),以及 Bootstrap 和 FontAwesome 等所使用的圖示字型。 此外,IronPDF 還支援:
- Google Fonts(完整目錄)
- Adobe Fonts (Typekit)
- Font Awesome 圖示(所有版本)
- Bootstrap 圖示
- Material Design 圖示
- 透過 CSS
@import或link標籤提供的自訂網頁字型服務 - 多種格式的自託管字型檔案 (
TTF,OTF,WOFF,WOFF2)
如果字型無法正確載入會發生什麼情況?
字型通常需要一段渲染延遲才能正確載入。 若字型未正確載入,可能會導致頁面空白且無任何文字顯示。 在此類情況下,瀏覽器通常會回退至系統預設字型,這可能會破壞文件的視覺一致性。 IronPDF 提供了多種機制來處理字型載入失敗的情況:
- 備用字型鏈:在 CSS 的
font-family宣告中定義多個字型 - 延長等待時間:針對較慢的連線,增加
AllFontsLoaded的超時設定 - 本地字型嵌入:請使用
@font-face搭配 base64 編碼的字型,以確保可用性 - 字型預載:使用 HTML preload 標籤來優先載入字型
如何直接匯入字型檔案?
若要使用現有的字型檔案,請在 CSS 樣式中套用 @font-face 規則。 當結合使用 @font-face 規則並嵌入 base64 編碼的 woff 檔案時,此方法同樣有效。 在以下範例中,我將使用 Pixelify Sans 字型。
:path=/static-assets/pdf/content-code-examples/how-to/webfonts-webicons-custom-font.cs
using IronPdf;
// Import custom font
string html = @"<!DOCTYPE html>
<html>
<head>
<style>
@font-face {font-family: 'Pixelify';
src: url('fonts\PixelifySans-VariableFont_wght.ttf');
}
p {
font-family: 'Pixelify';
font-size: 70px;
}
</style>
</head>
<body>
<p>Custom font</p>
</body>
</html>";
ChromePdfRenderer renderer = new ChromePdfRenderer();
// Render HTML to PDF
PdfDocument pdf = renderer.RenderHtmlAsPdf(html);
// Export the PDF
pdf.SaveAs("customFont.pdf");
Imports IronPdf
' Import custom font
Private html As String = "<!DOCTYPE html>
<html>
<head>
<style>
@font-face {font-family: 'Pixelify';
src: url('fonts\PixelifySans-VariableFont_wght.ttf');
}
p {
font-family: 'Pixelify';
font-size: 70px;
}
</style>
</head>
<body>
<p>Custom font</p>
</body>
</html>"
Private renderer As New ChromePdfRenderer()
' Render HTML to PDF
Private pdf As PdfDocument = renderer.RenderHtmlAsPdf(html)
' Export the PDF
pdf.SaveAs("customFont.pdf")
我可以使用哪些字型檔案格式?
若要使用現有的字型檔案,請在 CSS 樣式中套用 @font-face 規則。 當結合使用 @font-face 規則並嵌入 base64 編碼的 woff 檔案時,此方法同樣有效。 IronPDF 支援以下字型檔案格式:
- TTF(TrueType 字型):廣泛支援,非常適合螢幕顯示與 PRINT
- OTF(OpenType 字型):具備進階排版功能,適用於 Professional 文件
- WOFF (Web Open Font Format):針對網頁使用進行優化的壓縮格式
- WOFF2:相較於 WOFF 具備更佳的壓縮效果,檔案大小更小
- EOT (Embedded OpenType):適用於舊版瀏覽器的傳統格式
- SVG 字型:基於向量的字型(部分平台可能有限制)
何時該使用本機字型,何時該使用網頁字型?
若要使用現有的字型檔案,請在 CSS 樣式中套用 @font-face 規則。 選擇使用本機字型或網頁字型取決於以下幾個因素:
何時應使用本地字型:
- 支援離線作業或受限網路環境
- 需確保字型可用性
- 處理專有或授權字型
- 優化以實現更快的渲染速度,避免網路延遲
- 建立符合嚴格合規要求的文件
何時使用 Web Fonts:
- 使用大型字型庫(如 Google Fonts)
- 要求自動更新字型檔案
- 盡可能縮小應用程式套件大小
- 因應頻繁變動的排版需求
- 開發已依賴網際網路連線的應用程式
使用 Azure 時有哪些限制?
Azure 託管平台不支援伺服器在其較低階的共用 Web 應用程式層級中載入 SVG 字型。 然而,Azure 的 VPS 和 Web Role 並未採用相同的沙箱機制,且確實支援網頁字型渲染。 如需詳細的 Azure 部署指引,請參閱我們的 Azure 部署指南,其中涵蓋所有各層級的限制與解決方案。
哪些 Azure 服務層級支援字型渲染?
然而,Azure 的 VPS 和 Web Role 並未採用相同的沙箱機制,且確實支援網頁字型渲染。 以下是 Azure 服務層級支援的詳細說明:
完整字型支援:
- Azure 虛擬機器(所有規格)
- Azure Web Roles
- App Service Premium 服務層級 (
P1v2,P2v2,P3v2) - App Service 隔離層級
字型支援有限:
- App Service Basic 層級 (
B1,B2,B3) - 僅限網頁字型 - App Service Standard 層級 (
S1,S2,S3) - 部分 SVG 字型限制
不支援自訂字型:
- App Service 免費層級 (
F1) - App Service 共用層 (
D1)
為什麼較低階的 Azure 方案會有字型限制?
由於沙箱限制與資源限制,Azure 託管平台不支援伺服器在其較低階的共用 Web 應用程式層級中載入 SVG 字型。 較低層級的實作會建立嚴格的安全邊界,以防止執行自訂字型渲染所需的特定系統層級操作。 這些限制有助於 Azure 維持多租戶隔離,並防止在共用環境中發生資源濫用。
為克服這些限制,請考慮:
- 將字型以 base64 編碼字串的形式嵌入 CSS
- 僅使用來自 CDN 的網頁字型
- 在受支援的環境中預渲染 PDF
- 升級至更高階的 Azure 方案以獲得完整的字型支援
https://developer.mozilla.org/en-US/docs/Web/CSS/@font-face https://developer.mozilla.org/en-US/docs/Web/CSS/@font-face https://developer.mozilla.org/en-US/docs/Web/CSS/@font-face
常見問題
如何在我的 PDF 文件中使用 Google Fonts?
IronPDF 透過 HTML 渲染支援 Google Fonts。您只需在 HTML 的 head 區段中加入 Google Fonts 連結,並在 CSS 中套用 font-family 屬性。IronPDF 會在產生 PDF 時下載並渲染這些字型,確保您自訂的字型樣式在最終文件中正確顯示。
為什麼我的網頁字型在生成的 PDF 中無法正確顯示?
網頁字型通常需要時間載入才能顯示。IronPDF 在 RenderingOptions 中提供 WaitFor.AllFontsLoaded() 選項,讓您設定延遲時間(以毫秒為單位),確保字型在生成 PDF 之前已完全載入。此舉可避免字型遺漏或顯示錯誤。
我可以在 PDF 文件中使用 FontAwesome 圖示嗎?
是的,IronPDF 完全支援 FontAwesome 及其他圖示字型。請在 HTML 中加入 FontAwesome CSS 並使用適當的圖示類別。IronPDF 會將這些圖示字型渲染為 PDF 中的向量圖形,以維持其可縮放性與視覺品質。
如何使用 @font-face 搭配本地字型檔案?
IronPDF 支援 CSS @font-face 規則,用於載入本機字型檔案。請在 CSS 中定義您的 @font-face 規則,指定字型檔案路徑,然後將 font-family 套用至 HTML 元素。IronPDF 將在渲染過程中,將這些自訂字型直接嵌入 PDF 中。
PDF 生成支援哪些字型格式?
IronPDF 支援標準的網頁字型格式,包括透過 CSS @font-face 規則或外部字型服務使用的 WOFF、WOFF2、TTF 及 OTF 檔案。這確保了與當今大多數現代網頁字型及圖示字型的相容性。
如何確保在不同系統間保持排版的一致性?
IronPDF 會將網頁字型直接嵌入生成的 PDF 檔案中,確保您的自訂字型樣式能一致顯示,無論檢視者系統上安裝了哪些字型。這使其成為維持分散式文件品牌一致性的理想選擇。

