在Linux Docker容器中嵌入自定义字体到IronPDF中

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

在Windows上生成PDF时自定义字体正确嵌入,但在Linux Docker容器内嵌入失败。 取而代之的是,渲染器使用DejaVu Sans作为替代。

在Linux系统和Docker容器中,字体必须明确安装或引用。 如果Chrome渲染引擎无法获取可用字体,IronPDF会替换系统的默认后备字体,导致视觉差异和嵌入失败。

解决方案

选项1:安装Microsoft核心字体如Arial及类似字体

添加到您的Dockerfile中:

RUN apt update && apt install -y ttf-mscorefonts-installer

选项2:通过@font-face嵌入自定义字体

对于非系统字体,如Poppins或Roboto,在HTML中使用.ttf文件路径:

<!DOCTYPE html>
<html>
<head>
<style>
@font-face {
    font-family: 'Poppins';
    src: url('fonts/Poppins-Regular.ttf');
}
p {
    font-family: 'Poppins';
    font-size: 16px;
}
</style>
</head>
<body>
<p>Custom font text</p>
</body>
</html>
<!DOCTYPE html>
<html>
<head>
<style>
@font-face {
    font-family: 'Poppins';
    src: url('fonts/Poppins-Regular.ttf');
}
p {
    font-family: 'Poppins';
    font-size: 16px;
}
</style>
</head>
<body>
<p>Custom font text</p>
</body>
</html>
HTML

选项3:使用Print CSS媒体类型

设置@font-face声明:

renderer.RenderingOptions.CssMediaType = IronPdf.Rendering.PdfCssMediaType.Print;
renderer.RenderingOptions.CssMediaType = IronPdf.Rendering.PdfCssMediaType.Print;
renderer.RenderingOptions.CssMediaType = IronPdf.Rendering.PdfCssMediaType.Print
$vbLabelText   $csharpLabel

有关完整的Linux Docker设置,请参阅IronPDF Docker指南

Curtis Chau
技术作家

Curtis Chau 拥有卡尔顿大学的计算机科学学士学位,专注于前端开发,精通 Node.js、TypeScript、JavaScript 和 React。他热衷于打造直观且美观的用户界面,喜欢使用现代框架并创建结构良好、视觉吸引力强的手册。

除了开发之外,Curtis 对物联网 (IoT) 有浓厚的兴趣,探索将硬件和软件集成的新方法。在空闲时间,他喜欢玩游戏和构建 Discord 机器人,将他对技术的热爱与创造力相结合。

准备开始了吗?
Nuget 下载 20,088,359 | 版本: 2026.7 刚刚发布
Still Scrolling Icon

还在滚动吗?

想快速获得证据? PM > Install-Package IronPdf
运行示例看着你的HTML代码变成PDF文件。