Jak ustawić czcionki w plikach PDF w języku C#

Set Fonts in PDFs with IronPDF C

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

IronPDF pozwala programistom C# tworzyć PDF-y z niestandardowymi czcionkami internetowymi i ikonami czcionek z HTML. Obsługuje zarówno zewnętrzne serwisy czcionek, takie jak Google Fonts, jak i lokalne pliki czcionek przez zasady CSS @font-face, zapewniając spójną typografię we wszystkich wygenerowanych PDF-ach.

Czcionka webowa to specjalistyczna czcionka zaprojektowana do użycia na stronach internetowych. Te czcionki są hostowane na serwerach internetowych i pobierane przez przeglądarki, aby zapewnić konsekwentne i atrakcyjne wizualnie wyświetlanie tekstu na stronach, niezależnie od lokalnej dostępności czcionek użytkownika. Dodatkowo, ikony czcionek, które korzystają z symboli i znaków, są często używane w projektowaniu stron internetowych do tworzenia skalowalnych, dostosowywalnych ikon i utrzymania wizualnej spójności interfejsu użytkownika poprzez manipulacje CSS. Dzięki możliwości zarządzania czcionkami IronPDF, programiści mogą łatwo integrować te czcionki w swoim workflow generowania PDF-ów.

CSS zawiera czcionki webowe, umożliwiając określenie plików czcionek do pobrania przy uzyskiwaniu dostępu do strony internetowej. IronPDF wspiera ładowanie i renderowanie czcionek do PDF z HTML, co czyni go idealnym do tworzenia dokumentów wymagających określonego brandingu lub standardów typografii. Dla programistów pracujących z międzynarodową zawartością, IronPDF zapewnia także wsparcie dla UTF-8 i międzynarodowych języków.

Krótki przewodnik: Korzystanie z WebFonts w generowaniu PDF-ów

Włączaj czcionki webowe i ikonowe do swoich PDF-ów za pomocą biblioteki C# IronPDF. Ten przewodnik pokazuje, jak renderować zawartość HTML z niestandardowymi czcionkami, zapewniając spójne i wizualnie atrakcyjne PDF-y. Po prostu renderuj HTML za pomocą IronPDF i zapisuj stylizowany dokument w kilka sekund. Przed rozpoczęciem upewnij się, że zainstalowałeś IronPDF w swoim projekcie.

  1. Install IronPDF with NuGet Package Manager

    PM > Install-Package IronPdf
  2. Skopiuj i uruchom ten fragment kodu.

    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");
  3. Wdrożenie do testowania w środowisku produkcyjnym

    Rozpocznij używanie IronPDF w swoim projekcie już dziś z darmową wersją próbną

    arrow pointer

Jak używać WebFonts i ikon w PDF-ach?

IronPDF wspiera WebFonts (takie jak Google Fonts i Adobe web font API) oraz ikony czcionek, takie jak te używane przez Bootstrap i FontAwesome. To wsparcie sprawia, że IronPDF nadaje się do projektów wymagających zaawansowanej typografii, od prostych dokumentów po złożone raporty z elementami marki.

Czcionki często wymagają opóźnienia w renderowaniu, aby się poprawnie załadować. Gdy czcionka nie zostanie prawidłowo załadowana, może to prowadzić do pustej strony bez tekstu. Możesz użyć metody WaitFor.AllFontsLoaded, aby poczekać, aż wszystkie czcionki zostaną załadowane, przypisując jej maksymalny czas oczekiwania. Domyślny maksymalny czas oczekiwania wynosi 500ms. Dla bardziej skomplikowanych scenariuszy z JavaScript lub dynamiczną zawartością, zapoznaj się z naszym samouczkiem HTML do PDF, w którym omówiono zaawansowane techniki renderowania.

Oto mały przykład, jak użyć WebFont, nazwanego Lobster, w projekcie.

: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")
$vbLabelText   $csharpLabel

Odkryj więcej opcji WaitFor, takich jak te dla czcionek, JavaScript, elementów HTML i bezczynności sieciowej w WaitFor. Aby uzyskać responsywne projekty dostosowujące czcionki w oparciu o rozmiar ekranu, zapoznaj się z przewodnikiem na temat responsywnego CSS dla renderowania PDF.

Dlaczego czas ładowania czcionki ma znaczenie?

Gdy czcionka nie zostanie prawidłowo załadowana, może to prowadzić do pustej strony bez tekstu. Możesz użyć metody WaitFor.AllFontsLoaded, aby poczekać, aż wszystkie czcionki zostaną załadowane, przypisując jej maksymalny czas oczekiwania. Domyślny maksymalny czas oczekiwania wynosi 500ms. To rozważanie czasowe jest szczególnie ważne podczas pracy z złożonymi aplikacjami webowymi lub podczas renderowania zawartości WebGL do PDF, gdzie wiele zasobów musi być ładowanych sekwencyjnie.

Opóźnienia w ładowaniu czcionki mogą się różnić w zależności od kilku czynników, w tym prędkości sieci, rozmiaru pliku czcionki i czasu odpowiedzi serwera. Gdy pracujesz z wieloma niestandardowymi czcionkami lub bibliotekami ikon, zaleca się zwiększenie czasu oczekiwania, aby zapewnić prawidłowe renderowanie całej typografii. Jest to szczególnie ważne dla profesjonalnych dokumentów, gdzie brakujące czcionki mogą wpłynąć na czytelność i spójność marki.

Jakie usługi czcionek są obsługiwane?

IronPDF wspiera WebFonts (takie jak Google Fonts i Adobe web font API) oraz ikony czcionek, takie jak te używane przez Bootstrap i FontAwesome. Dodatkowo IronPDF wspiera:

  • Google Fonts (cały katalog)
  • Adobe Fonts (Typekit)
  • Ikony Font Awesome (wszystkie wersje)
  • Ikony Bootstrap
  • Ikony Material Design
  • Niestandardowe serwisy czcionek webowych za pomocą CSS @import lub link tagów
  • Pliki czcionek hostowane lokalnie w różnych formatach (TTF, OTF, WOFF, WOFF2)

Co się dzieje, jeśli czcionki nie załadują się poprawnie?

Czcionki często wymagają opóźnienia w renderowaniu, aby się poprawnie załadować. Gdy czcionka nie zostanie prawidłowo załadowana, może to prowadzić do pustej strony bez tekstu. W takich przypadkach przeglądarki zwykle przechodzą na domyślne systemowe czcionki, co może zaburzyć spójność wizualną dokumentu. IronPDF oferuje kilka rozwiązań do obsługi problemów z ładowaniem czcionek:

  1. Łańcuchy czcionek zapasowych: Zdefiniuj wiele czcionek w deklaracji CSS font-family
  2. Przedłużone czasy oczekiwania: Zwiększaj limit czasu AllFontsLoaded dla wolniejszych połączeń
  3. Osadzenie czcionek lokalnych: Użyj @font-face z czcionkami zakodowanymi w base64 dla zapewnionej dostępności
  4. Wstępne ładowanie czcionek: Używaj znaczników wstępnego ładowania HTML, aby priorytetowo traktować ładowanie czcionek

Jak zaimportować pliki czcionek bezpośrednio?

Aby użyć istniejącego pliku czcionki, zastosuj regułę @font-face w stylizacji CSS. To również działa, gdy używasz kombinacji reguły @font-face i osadzania plików woff zakodowanych w base64. W poniższym przykładzie będę używał czcionki 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")
$vbLabelText   $csharpLabel

Jakie formaty plików czcionek mogę używać?

Aby użyć istniejącego pliku czcionki, zastosuj regułę @font-face w stylizacji CSS. To również działa, gdy używasz kombinacji reguły @font-face i osadzania plików woff zakodowanych w base64. IronPDF obsługuje następujące formaty plików czcionek:

  • TTF (TrueType Font): Szeroko obsługiwany, idealny zarówno do ekranu, jak i do druku
  • OTF (OpenType Font): Zaawansowane funkcje typografii, odpowiedni do dokumentów profesjonalnych
  • WOFF (Web Open Font Format): Skompresowany format zoptymalizowany do użytku w sieci
  • WOFF2: Ulepszona kompresja w porównaniu do WOFF, mniejsze rozmiary plików
  • EOT (Embedded OpenType): Format historyczny dla starszych przeglądarek
  • Czcionki SVG: Czcionki bazujące na wektorach (z ograniczeniami na niektórych platformach)

Kiedy powinienem używać lokalnych czcionek w porównaniu do czcionek webowych?

Aby użyć istniejącego pliku czcionki, zastosuj regułę @font-face w stylizacji CSS. Wybór między lokalnymi a internetowymi czcionkami zależy od kilku czynników:

Używaj lokalnych czcionek, gdy:

  • Pracujesz offline lub w środowiskach z ograniczoną siecią
  • Wymagasz zapewnienia dostępności czcionek
  • Pracujesz z czcionkami zastrzeżonymi lub licencjonowanymi
  • Optymalizujesz pod kątem szybszego renderowania bez opóźnień sieciowych
  • Tworzysz dokumenty z rygorystycznymi wymaganiami zgodności

Używaj czcionek webowych, gdy:

  • Korzystasz z dużych bibliotek czcionek, takich jak Google Fonts
  • Wymagasz automatycznych aktualizacji plików czcionek
  • Minimalizujesz rozmiar pakietu aplikacji
  • Pracujesz z często zmieniającymi się wymaganiami dotyczącymi typografii
  • Tworzysz aplikacje, które już polegają na łączności z internetem

Jakie są ograniczenia przy korzystaniu z Azure?

Platforma hostingowa Azure nie wspiera serwerów ładujących czcionki SVG w niższych współdzielonych warstwach aplikacji webowych. Jednakże VPS i Web Role Azure nie są izolowane w ten sam sposób i wspierają renderowanie czcionek webowych. Dla szczegółowych wskazówek dotyczących wdrażania Azure, odwołaj się do naszego przewodnika wdrażania Azure, który obejmuje wszystkie ograniczenia specyficzne dla warstw i obejścia.

Które warstwy Azure wspierają renderowanie czcionek?

Jednakże VPS i Web Role Azure nie są izolowane w ten sam sposób i wspierają renderowanie czcionek webowych. Oto podział wsparcia warstw Azure:

Pełne wsparcie czcionek:

  • Maszyny wirtualne Azure (wszystkie rozmiary)
  • Role webowe Azure
  • Warstwy Premium Usług Aplikacyjnych (P1v2, P2v2, P3v2)
  • Warstwy izolowane Usług Aplikacyjnych

Ograniczone wsparcie czcionek:

  • Podstawowa warstwa Usług Aplikacyjnych (B1, B2, B3) - tylko czcionki webowe
  • Standardowa warstwa Usług Aplikacyjnych (S1, S2, S3) - niektóre ograniczenia dotyczące czcionek SVG

Brak wsparcia dla niestandardowych czcionek:

  • Bezpłatna warstwa Usług Aplikacyjnych (F1)
  • Współdzielona warstwa Usług Aplikacyjnych (D1)

Dlaczego niższe warstwy Azure mają ograniczenia dotyczące czcionek?

Platforma hostingowa Azure nie wspiera serwerów ładujących czcionki SVG w niższych współdzielonych warstwach aplikacji webowych z powodu ograniczeń sandboxingu i ograniczeń zasobów. Niższe warstwy wprowadzają surowe granice bezpieczeństwa, które uniemożliwiają niektóre operacje na poziomie systemu wymagane do renderowania niestandardowych czcionek. Te ograniczenia pomagają Azure utrzymać izolację wielotenantową i zapobiegać nadużyciom zasobów w środowiskach współdzielonych.

Aby obejść te ograniczenia, rozważ:

  1. Osadź czcionki jako ciągi zakodowane w base64 w swoim CSS
  2. Używaj tylko czcionek webowych z CDN-ów
  3. Wstępne renderowanie PDF-ów w środowisku obsługiwanym
  4. Ulepsz do wyższej warstwy Azure z pełnym wsparciem czcionek

Często Zadawane Pytania

How can I use Google Fonts in my PDF documents?

IronPDF supports Google Fonts through HTML rendering. Simply include the Google Fonts link in your HTML head section and apply the font-family in CSS. IronPDF will download and render these fonts when generating the PDF, ensuring your custom typography appears correctly in the final document.

Why aren't my web fonts appearing correctly in the generated PDF?

Web fonts often require time to load before rendering. IronPDF provides a WaitFor.AllFontsLoaded() option in the RenderingOptions that allows you to set a delay (in milliseconds) to ensure fonts are fully loaded before PDF generation. This prevents missing or incorrectly rendered fonts.

Can I use FontAwesome icons in my PDFs?

Yes, IronPDF fully supports FontAwesome and other icon fonts. Include the FontAwesome CSS in your HTML and use the appropriate icon classes. IronPDF will render these icon fonts as vector graphics in your PDF, maintaining their scalability and visual quality.

How do I use local font files with @font-face?

IronPDF supports CSS @font-face rules for loading local font files. Define your @font-face rule in your CSS, specifying the font file path, and then apply the font-family to your HTML elements. IronPDF will embed these custom fonts directly into the PDF during rendering.

What font formats are supported for PDF generation?

IronPDF supports standard web font formats including WOFF, WOFF2, TTF, and OTF files when used through CSS @font-face rules or external font services. This ensures compatibility with most modern web fonts and icon fonts available today.

How can I ensure consistent typography across different systems?

IronPDF embeds web fonts directly into the generated PDF files, ensuring that your custom typography displays consistently regardless of the fonts installed on the viewer's system. This makes it ideal for maintaining brand consistency in distributed documents.

Curtis Chau
Autor tekstów technicznych

Curtis Chau posiada tytuł licencjata z informatyki (Uniwersytet Carleton) i specjalizuje się w front-endowym rozwoju, z ekspertką w Node.js, TypeScript, JavaScript i React. Pasjonuje się tworzeniem intuicyjnych i estetycznie przyjemnych interfejsów użytkownika, Curtis cieszy się pracą z nowoczesnymi frameworkami i tworzeniem dobrze zorganizowanych, atrakcyjnych wizualnie podrę...

Czytaj więcej
Gotowy, aby rozpocząć?
Nuget Pliki do pobrania 18,135,201 | Wersja: 2026.4 just released
Still Scrolling Icon

Wciąż przewijasz?

Czy chcesz szybko dowodu? PM > Install-Package IronPdf
Uruchom przykład i zobacz, jak Twój kod HTML zamienia się w plik PDF.