如何在C#的PDF中設置字體

Set Fonts in PDFs with IronPDF C

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

IronPDF允許C#開發者從HTML建立具有自定義Web字體和圖標字體的PDF。 它支持外部字體服務(如Google字體)和通過CSS @font-face規則的本地字體文件,確保所有生成的PDF中一致的排版。

Webfont是一種專門為網站設計的字體。 這些字體託管在網頁伺服器上,由瀏覽器下載,以確保網站上文字渲染的一致性和視覺吸引力,無論使用者的本地字體是否可用。 此外,使用符號和字形的圖標字體通常用於網頁設計,以建立可縮放、可自定義的圖標,並通過CSS操作維持視覺一致的使用者介面。 通過IronPDF的字體管理功能,開發者可以輕鬆地將這些字體整合到他們的PDF生成工作流程中。

CSS包含Web字體,使您能夠在存取網站時指定要下載的字體文件。 IronPDF支持從HTML載入字體並呈現在PDF中,這使其對於要求特定品牌或排版標準的文件建立非常理想。 對於處理國際化內容的開發者,IronPDF還提供UTF-8和國際語言支持

快速入門:在PDF生成中使用WebFonts

使用IronPDF的C#程式庫將Web和圖標字體納入您的PDF中。 本指南展示如何使用自定義字體呈現HTML內容,確保PDF的一致性和視覺吸引力。 只需使用IronPDF呈現HTML並在幾秒鐘內保存您設計好的文件。 開始之前,請確保您已在專案中安裝IronPDF

  1. 使用NuGet套件管理器安裝https://www.nuget.org/packages/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中使用WebFonts和圖標?

IronPDF支持WebFonts(如Google字體和Adobe Web字體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")
$vbLabelText   $csharpLabel

探索更多WaitFor選項,例如字體、JavaScript、HTML元素和網路閒置的'類文件'。 對於根據螢幕大小調整字體的響應式設計,請查看我們關於PDF渲染的響應式CSS指南

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

當字體未正確載入時,可能會導致頁面空白沒有任何文字。 您可以使用WaitFor.AllFontsLoaded方法設定最大等待時間來確保所有字體載入。 預設的最大等待時間是500ms。 當處理複雜的Web應用或呈現WebGL內容到PDF時,這種計時考量尤為重要,因為多個資源需要按順序載入。

字體載入延遲可能會因網路速度、字體文件大小和伺服器響應時間等多種因素而異。當處理多個自定義字體或圖標庫時,建議增加等待時間以確保所有排版正確呈現。 這對於專業文件尤為重要,因為缺失的字體可能影響可讀性和品牌一致性。

支持哪些字體服務?

IronPDF支持WebFonts(如Google字體和Adobe Web字體API)以及用於Bootstrap和FontAwesome的圖標字體。 此外,IronPDF支持:

  • Google字體(整個目錄)
  • Adobe字體(Typekit)
  • Font Awesome圖標(所有版本)
  • Bootstrap圖標
  • Material Design圖標
  • 通過CSS link標籤的自定義Web字體服務
  • 各種格式的自託管字體文件(WOFF2

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

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

  1. 後備字體鏈:在您的CSS font-family聲明中定義多個字體
  2. 擴展等待時間:為較慢的連接增加AllFontsLoaded超時
  3. 本地字體嵌入:使用@font-face載入base64編碼的字體以保證可用性
  4. 字體預載入:使用HTML預載入標籤優先載入字體
Icon Quote related to 如果字體未正確載入會發生什麼?

我最喜歡的程式庫是IronPDF。它允許快速高效地操作PDF文件。它還有許多有價值的功能,例如導出到PDF/A格式和數位簽署PDF文件。

Milan Jovanovic related to 如果字體未正確載入會發生什麼?

Milan Jovanovic

Microsoft MVP

查看案例研究
Icon Quote related to 如果字體未正確載入會發生什麼?

IronOCR意味著我們每年可以從手動處理中節省$40,000,同時提高生產力,釋放資源以進行高影響的任務。我會強烈推薦它。

Brent Matzelle related to 如果字體未正確載入會發生什麼?

Brent Matzelle

首席技術官,OPYN

查看案例研究
Icon Quote related to 如果字體未正確載入會發生什麼?

IronSuite在我們的運營中扮演著至關重要的角色。這些工具增加了包括建立平面圖和改善庫存管理在內的業務效率。

David Jones related to 如果字體未正確載入會發生什麼?

David Jones

首席軟體工程師,Agorus Build

查看案例研究

我如何直接導入字體文件?

要使用現有字體文件,請在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")
$vbLabelText   $csharpLabel

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

要使用現有字體文件,請在CSS樣式中應用@font-face規則。 當使用@font-face規則與嵌入base64編碼的woff文件相結合時,它也能工作。 IronPDF支持以下字體文件格式:

  • TTF(TrueType Font):廣泛支持,適合螢幕和印刷
  • OTF(OpenType Font):具有高級排版功能,適合專業文件
  • WOFF(Web Open Font Format):適合網頁使用的壓縮格式
  • WOFF2:比WOFF壓縮更好,文件大小更小
  • EOT(Embedded OpenType):舊版格式,適用於舊瀏覽器
  • SVG字體:基於向量的字體(在某些平台上有限制)

我什麼時候應該使用本地字體與Web字體?

要使用現有字體文件,請在CSS樣式中應用@font-face規則。 本地和Web字體之間的選擇取決於多個因素:

使用本地字體的情境:

  • 離線工作或受限的網路環境
  • 確保字體可用性
  • 處理專有或授權字體
  • 優化以避免網路延遲的快速呈現
  • 建立具有嚴格合規性要求的文件

使用Web字體的情境:

  • 使用大型字體庫如Google字體
  • 需要自動更新字體文件
  • 將應用程式包的大小最小化
  • 處理經常變化的排版需求
  • 構建依賴於互聯網連接的應用程式

使用Azure時有什麼限制?

Azure託管平台不支持較低的共享Web應用層中的伺服器載入SVG字體。 然而,Azure的VPS和Web Role並未以相同方式沙盒化,並支持Web字體渲染。 有關詳細的Azure部署指導,請參閱我們的Azure部署指南,其涵蓋所有層級特定的限制和解決方案。

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

然而,Azure的VPS和Web Role並未以相同方式沙盒化,並支持Web字體渲染。 以下是Azure層級支持的細分:

完全字體支持:

  • Azure虛擬機器(所有大小)
  • Azure Web Roles
  • App Service Premium層(P3v2
  • App Service Isolated層

有限的字體支持:

  • App Service Basic層(B3)-僅支持Web字體
  • App Service Standard層(S3)-某些SVG字體限制

不支持自定義字體:

  • App Service Free層(F1
  • App Service Shared層(D1

為什麼較低的Azure層級有字體限制?

Azure託管平台不支持較低的共享Web應用層中的伺服器載入SVG字體,因為沙盒限制和資源限制。 較低層實施嚴格的安全邊界,防止自定義字體渲染所需的某些系統級操作。 這些限制有助於Azure保持多租戶隔離,防止共享環境中的資源濫用。

要繞過這些限制,請考慮:

  1. 在CSS中嵌入base64編碼的字體
  2. 僅使用來自CDN的Web字體
  3. 在支持的環境中預先渲染PDF
  4. 升級到具有完全字體支持的更高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。只需將Google Fonts連結包含在您的HTML頭部區域,並在CSS中應用字體系列。IronPDF會在生成PDF時下載並渲染這些字體,確保您的自訂排版正確出現在最終文件中。

為什麼我的網頁字體在生成的PDF中沒有正確顯示?

網頁字體經常需要時間載入才能正確渲染。IronPDF提供RenderingOptions中的WaitFor.AllFontsLoaded()選項,允許您設定延遲(以毫秒為單位)以確保字體在PDF生成前完整載入。這可以防止字體遺失或錯誤渲染。

我能在我的PDF中使用FontAwesome圖示嗎?

可以,IronPDF完全支援FontAwesome及其他圖示字體。將FontAwesome的CSS包含在您的HTML中並使用適當的圖示類別。IronPDF會將這些圖示字體作為向量圖形在PDF中渲染,保持其可擴展性和視覺質量。

如何使用@font-face處理本地字體文件?

IronPDF支援CSS @font-face規則用於載入本地字體文件。在您的CSS中定義@font-face規則,指定字體文件路徑,然後將字體系列應用到您的HTML元素。IronPDF在渲染期間會將這些自訂字體直接嵌入PDF中。

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

IronPDF支援標準網頁字體格式,包括在CSS @font-face規則或外部字體服務中使用的WOFF、WOFF2、TTF和OTF文件。這確保了今天大多數現代網頁字體與圖示字體的相容性。

如何在不同系統間保證排版一致性?

IronPDF將網頁字體直接嵌入生成的PDF文件中,確保您的自訂排版無論在查看者系統上是否安裝字體都能保持一致。這使它成為分發文件中保持品牌一致性的理想選擇。

Curtis Chau
技術作家

Curtis Chau擁有Carleton大學的電腦科學學士學位,專精於前端開發,擁有Node.js、TypeScript、JavaScript和React的專業知識。Curtis熱衷於建立直觀且美觀的使用者介面,喜愛使用現代框架並建立結構良好、視覺吸引力的手冊。

除了開發,Curtis對物聯網(IoT)有濃厚的興趣,探索創新的方法來整合硬體和軟體。在空閒時間,他喜歡玩遊戲和建立Discord機器人,結合他對技術的熱愛與創造力。

準備開始了嗎?
Nuget 下載 19,936,792 | 版本: 2026.7 剛剛發布
Still Scrolling Icon

還在捲動嗎?

想快速獲得證明嗎? PM > Install-Package IronPdf
執行範例 看您的HTML變成PDF。