使用 IronPDF C# 在 PDF 中設定字體
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 建立 PDF 檔案:
使用 NuGet 套件管理器安裝 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");部署到您的生產環境進行測試
最簡工作流程(5個步驟)
- 下載用於在 PDF 中設定字體的 C# 庫 IronPDF
- 使用 HTML 從外部來源匯入或請求字體
- 延遲渲染過程以確保字體正確載入
- 像往常一樣將 HTML 渲染成 PDF。
- 在 CSS 樣式中使用 @font-face 規則匯入字型文件
如何在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.csusing 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");探索更多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
@import或link標籤提供自訂網頁字體服務 - 提供多種格式的自託管字型檔案(
TTF、OTF、WOFF、WOFF2)
如果字體無法正確載入會發生什麼?
字體通常需要延遲渲染才能正確載入。 如果字體載入不正確,可能會導致頁面空白,沒有任何文字。 在這種情況下,瀏覽器通常會回退到系統預設字體,這可能會破壞文件的視覺一致性。 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.csusing 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");我可以使用哪些字型文件格式?
若要使用現有的字體文件,請在 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 角色 - 應用程式服務進階版(
P1v2、P2v2、P3v2)
應用服務隔離層
字體支援有限:
- 應用服務基礎層(
B1、B2、B3)- 僅限網頁字體 - 應用服務標準層(
S1、S2、S3)- 部分 SVG 字體限制
不支援自訂字體:
- 應用程式服務免費層級(
F1) - 應用程式服務共享層(
D1)
為什麼較低階的 Azure 服務會對字型有限制?
由於沙盒限制和資源限制, Azure 託管平台不支援在其較低共用 Web 應用程式層中載入 SVG 字體。 較低層級實施了嚴格的安全邊界,阻止了自訂字體渲染所需的某些系統級操作。 這些限制有助於 Azure 維護多租用戶隔離,並防止在共用環境中濫用資源。
為了克服這些限制,請考慮:
- 在 CSS 中以 base64 編碼字串的形式嵌入字體
- 僅使用來自 CDN 的網頁字體
- 在支援的環境中預先渲染 PDF
- 升級到具有完整字體支援的更高 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 檔案中,無論閱讀者系統上安裝了何種字體,都能確保您自訂的排版顯示一致。這使其成為在分散式文件中維持品牌一致性的理想選擇。






