如何在 C# 中設置 PDF 字體

使用 IronPDF C# 在 PDF 中設定字體

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

IronPDF 允許 C# 開發人員從 HTML 建立帶有自訂 Web 字體和圖示字體的 PDF。 它透過 CSS @font-face規則支援 Google Fonts 等外部字體服務和本機字體文件,確保所有產生的 PDF 的排版一致。

網頁字體是專為網站設計的字體。 這些字體託管在網站伺服器上,並透過網頁瀏覽器下載,以確保網站上的文字渲染效果一致且美觀,而無需考慮使用者本地字體的可用性。 此外,使用符號和字形的圖標字體經常用於網頁設計中,以創建可縮放、可自訂的圖標,並透過 CSS 操作保持視覺上一致的使用者介面。 透過 IronPDF 的字體管理功能,開發人員可以輕鬆地將這些字體整合到他們的 PDF 生成工作流程中。

CSS 包含網頁字體,可讓您指定在造訪您的網站時要下載的字體檔案。 IronPDF 支援從 HTML 載入字體並將其渲染到 PDF,因此非常適合建立需要特定品牌或排版標準的文件。 對於處理國際內容的開發人員,IronPDF 也提供UTF-8 和國際語言支援

快速入門:在 PDF 生成中使用 Web 字體

使用 IronPDF 的 C# 庫將網頁字體和圖示字體整合到 PDF 中。 本指南將向您展示如何使用自訂字體渲染 HTML 內容,從而確保產生一致且美觀的 PDF 文件。 只需使用 IronPDF 渲染 HTML,即可在幾秒鐘內儲存樣式化的文件。 開始之前,請確保已在專案中安裝 IronPDF

Nuget Icon立即開始使用 NuGet 建立 PDF 檔案:

  1. 使用 NuGet 套件管理器安裝 IronPDF

    PM > Install-Package IronPdf

  2. 複製並運行這段程式碼。

    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");
  3. 部署到您的生產環境進行測試

    立即開始在您的專案中使用 IronPDF,免費試用!
    arrow pointer

如何在PDF中使用Web字體和圖示?

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");
$vbLabelText   $csharpLabel

探索更多WaitFor選項,例如字體、JavaScript、HTML 元素和網路空閒狀態的 WaitFor 選項,請參閱" WaitFor "類別文件](/how-to/waitfor/)。根據螢幕尺寸調整字體的響應式設計,請查看我們關於 PDF 渲染的響應式 CSS 指南](/how-to/html-to-pdf-responsive-css/)。

為什麼字體載入時間很重要?

如果字體載入不正確,可能會導致頁面空白,沒有任何文字。 您可以使用WaitFor.AllFontsLoaded方法,透過為其分配最大等待時間來等待所有字體載入完畢。 預設最大等待時間為500ms 。 在處理複雜的 Web 應用程式或將WebGL 內容渲染為 PDF時,這種時間上的考慮尤其重要,因為需要按順序載入多個資源。

字體載入延遲受多種因素影響,包括網路速度、字型檔案大小和伺服器回應時間。使用多個自訂字體或圖示庫時,建議增加等待時間,以確保所有文字都能正確渲染。 這一點對於專業文件尤其重要,因為缺少字體可能會影響可讀性和品牌一致性。

支援哪些字體服務?

IronPDF 支援WebFonts (例如 Google Fonts 和 Adobe Web Font API)和圖示字體,例如 Bootstrap 和FontAwesome使用的字體。 此外,IronPDF 也支援:

  • Google Fonts(完整目錄)
  • Adobe Fonts(Typekit)
  • Font Awesome 圖示(所有版本) Bootstrap 圖標
  • Material Design 圖標
  • 透過 CSS @importlink標籤提供自訂網頁字體服務
  • 提供多種格式的自託管字型檔案( TTFOTFWOFFWOFF2

如果字體無法正確載入會發生什麼?

字體通常需要延遲渲染才能正確載入。 如果字體載入不正確,可能會導致頁面空白,沒有任何文字。 在這種情況下,瀏覽器通常會回退到系統預設字體,這可能會破壞文件的視覺一致性。 IronPDF 提供了多種機制來處理字體載入失敗的問題:

1.備用字體鏈:在 CSS font-family聲明中定義多個字體
2.延長等待時間:連接速度較慢的情況,增加AllFontsLoaded逾時時間
3.本地字體嵌入:使用@font-face並配合 base64 編碼的字體,以確保字體可用性。
4.字體預先載入:使用 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");
$vbLabelText   $csharpLabel

我可以使用哪些字型文件格式?

若要使用現有的字體文件,請在 CSS 樣式中套用@font-face規則。 當結合使用@font-face規則和嵌入 base64 編碼的 woff 檔案時,它也能正常運作。 IronPDF 支援以下字型文件格式:

  • TTF(TrueType 字型) :廣泛支持,是螢幕顯示和印刷的理想選擇。
  • OTF(OpenType 字型) :具有高級排版功能,適用於專業文檔
  • WOFF(Web 開放字體格式) :一種針對 Web 使用最佳化的壓縮格式
  • WOFF2 :比起 WOFF,壓縮率更高,檔案更小
  • EOT(嵌入式 OpenType) :適用於舊版瀏覽器的傳統格式
  • SVG 字體:基於向量的字體(在某些平台上有限制)

何時應該使用本地字體,何時應該使用網頁字體?

若要使用現有的字體文件,請在 CSS 樣式中套用@font-face規則。 本地字體和網頁字體的選擇取決於幾個因素:

何時使用本地字體:

  • 離線或在受限網路環境下工作
  • 要求保證字體可用性
    處理專有字體或授權字體
  • 優化渲染速度,避免網路延遲
  • 建立符合嚴格合規要求的文件

何時使用網頁字體:

  • 使用像 Google Fonts 這樣的大型字體庫
  • 需要自動更新字型文件
  • 最小化應用程式套件大小
  • 因應頻繁變化的排版要求
  • 建立已經依賴互聯網連接的應用程式

使用 Azure 有哪些限制?

Azure 託管平台不支援伺服器在其較低共用 Web 應用程式層載入 SVG 字型。 然而,Azure 的 VPS 和 Web 角色並非以相同的方式進行沙盒隔離,並且支援 Web 字體渲染。 有關詳細的 Azure 部署指南,請參閱我們的Azure 部署指南,其中涵蓋了所有特定層級的限制和解決方法。

哪些 Azure 層級支援字體渲染?

然而,Azure 的 VPS 和 Web 角色並非以相同的方式進行沙盒隔離,並且支援 Web 字體渲染。 以下是 Azure 各層級支援的詳細說明:

完全支援字體:

  • Azure 虛擬機器(所有規格)
    Azure Web 角色
  • 應用程式服務進階版( P1v2P2v2P3v2
    應用服務隔離層

字體支援有限:

  • 應用服務基礎層( B1B2B3 )- 僅限網頁字體
  • 應用服務標準層( S1S2S3 )- 部分 SVG 字體限制

不支援自訂字體:

  • 應用程式服務免費層級( F1
  • 應用程式服務共享層( D1

為什麼較低階的 Azure 服務會對字型有限制?

由於沙盒限制和資源限制, Azure 託管平台不支援在其較低共用 Web 應用程式層中載入 SVG 字體。 較低層級實施了嚴格的安全邊界,阻止了自訂字體渲染所需的某些系統級操作。 這些限制有助於 Azure 維護多租用戶隔離,並防止在共用環境中濫用資源。

為了克服這些限制,請考慮:

  1. 在 CSS 中以 base64 編碼字串的形式嵌入字體
  2. 僅使用來自 CDN 的網頁字體
  3. 在支援的環境中預先渲染 PDF
  4. 升級到具有完整字體支援的更高 Azure 層級

常見問題解答

如何在 PDF 文件中使用 Google 字體?

IronPDF 透過 HTML 演算法支援 Google 字體。只需在 HTML 標頭部分包含 Google Fonts 連結,並在 CSS 中應用字型即可。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 規則,指定字型檔案路徑,然後將字型套用至 HTML 元素。IronPDF 會在渲染時將這些自訂字型直接嵌入 PDF 中。

PDF 生成支援哪些字型格式?

透過 CSS @font-face 規則或外部字型服務使用時,IronPdf 支援標準的網頁字型格式,包括 WOFF、WOFF2、TTF 和 OTF 檔案。這可確保與現今絕大多數的現代網路字型和圖示字型相容。

如何確保不同系統的排版一致?

IronPDF 將 Web 字體直接嵌入生成的 PDF 檔案中,無論閱讀者系統上安裝了何種字體,都能確保您自訂的排版顯示一致。這使其成為在分散式文件中維持品牌一致性的理想選擇。

柯蒂斯·週
技術撰稿人

Curtis Chau擁有卡爾頓大學電腦科學學士學位,專長於前端開發,精通Node.js、TypeScript、JavaScript和React。他熱衷於打造直覺美觀的使用者介面,喜歡使用現代框架,並擅長撰寫結構清晰、視覺效果出色的使用者手冊。

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

準備好開始了嗎?
Nuget 下載 17,012,929 | 版本: 2025.12 剛剛發布