如何在 PDF 中设置字体

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

网络字体是专为网站设计的专用字体。这些字体托管在网络服务器上,由网络浏览器下载,以确保在网站上呈现一致且具有视觉吸引力的文本,而不受用户本地字体可用性的影响。此外,图标字体使用符号和字形,通常用于网页设计,以创建可缩放、可定制的图标,并通过 CSS 操作保持视觉上一致的用户界面。

CSS 包括网页字体,使您能够在访问网站时指定字体文件以供下载。IronPDF 支持字体加载和从 HTML 渲染 PDF。

适用于PDF的C# NuGet库

安装使用 NuGet

Install-Package IronPdf
Java PDF JAR

下载 DLL

下载DLL

手动安装到你的项目中

适用于PDF的C# NuGet库

安装使用 NuGet

Install-Package IronPdf
Java PDF JAR

下载 DLL

下载DLL

手动安装到你的项目中

开始在您的项目中使用IronPDF,并立即获取免费试用。

第一步:
green arrow pointer

查看 IronPDFNuget 用于快速安装和部署。它有超过800万次下载,正在使用C#改变PDF。

适用于PDF的C# NuGet库 nuget.org/packages/IronPdf/
Install-Package IronPdf

考虑安装 IronPDF DLL 直接。下载并手动安装到您的项目或GAC表单中: IronPdf.zip

手动安装到你的项目中

下载DLL

使用网络字体和图标示例

IronPDF 支持 网络字体 (如 Google 字体和 Adobe 网页字体应用程序接口) 和图标字体,例如 Bootstrap 和 字体真棒.

字体通常需要延迟渲染才能正确加载。如果字体加载不正确,就会导致页面空白,没有任何文字。您可以使用 WaitFor.AllFontsLoaded 方法,通过为其指定最大等待时间来等待字体。默认最大等待时间为 500ms。

下面是一个小例子,说明如何使用 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")
VB   C#

探索更多 WaitFor 选项,如字体、JavaScript、HTML 元素和网络空闲的 WaitFor 选项,请访问 "WaitFor"。如何使用 WaitFor 类延迟 C# PDF 渲染.'


导入字体文件示例

要使用现有字体文件,请应用 @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")
VB   C#

Azure PDF 的限制

蔚蓝 Azure 托管平台 不支持服务器在其较低的共享网络应用程序层中加载 SVG 字体。不过,Azure 的 VPS 和 Web Role 并没有以同样的方式进行沙盒处理,而是支持网页字体渲染。