Einbetten von benutzerdefinierten Schriften in IronPDF auf Linux Docker-Containern
Benutzerdefinierte Schriften werden beim Generieren von PDFs auf Windows korrekt eingebettet, schlagen jedoch in einem Linux Docker-Container fehl. Anstelle der beabsichtigten Schrift verwendet der Renderer DejaVu Sans als Ersatz.
Auf Linux-Systemen und innerhalb von Docker Containern müssen Schriften explizit installiert oder referenziert werden. Wenn eine Schrift der Chrome-Render-Engine nicht zur Verfügung steht, ersetzt IronPDF die Standardschriftausfallschrift des Systems, was zu visuellen Unterschieden und Einbettungsfehlern führt.
Lösung
Option 1: Installieren Sie die Microsoft Core-Schriften für Arial und ähnliche Schriften
Fügen Sie zu Ihrem Dockerfile hinzu:
RUN apt update && apt install -y ttf-mscorefonts-installer
Option 2: Benutzerdefinierte Schriften über @font-face einbetten
Für nicht-systemeigene Schriftarten wie Poppins oder Roboto deklarieren Sie diese im HTML mit @font-face unter Angabe eines Pfads zu einer .ttf-Datei, die im Docker-Image gebündelt ist:
<!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>
Option 3: Verwenden Sie den Druck CSS Medientyp
Legen Sie CssMediaType fest, um druckspezifische Stile anzuwenden, einschließlich @font-face-Deklarationen:
renderer.RenderingOptions.CssMediaType = IronPdf.Rendering.PdfCssMediaType.Print;
renderer.RenderingOptions.CssMediaType = IronPdf.Rendering.PdfCssMediaType.Print;
renderer.RenderingOptions.CssMediaType = IronPdf.Rendering.PdfCssMediaType.Print
Für eine vollständige Linux Docker Einrichtung siehe den IronPDF Docker-Leitfaden.

