Set Fonts in PDFs with IronPDF C
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。
-
使用NuGet套件管理器安裝https://www.nuget.org/packages/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規則在CSS樣式中導入字體文件
我如何在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")
探索更多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提供多種機制來處理字體載入失敗:
- 後備字體鏈:在您的CSS
font-family聲明中定義多個字體 - 擴展等待時間:為較慢的連接增加
AllFontsLoaded超時 - 本地字體嵌入:使用
@font-face載入base64編碼的字體以保證可用性 - 字體預載入:使用HTML預載入標籤優先載入字體
我如何直接導入字體文件?
要使用現有字體文件,請在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 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保持多租戶隔離,防止共享環境中的資源濫用。
要繞過這些限制,請考慮:
- 在CSS中嵌入base64編碼的字體
- 僅使用來自CDN的Web字體
- 在支持的環境中預先渲染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。只需將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文件中,確保您的自訂排版無論在查看者系統上是否安裝字體都能保持一致。這使它成為分發文件中保持品牌一致性的理想選擇。

