Emotikony nie renderują się w IronPDF przy użyciu RenderHtmlAsPdf()
Podczas renderowania HTML zawierającego znaki emoji przy użyciu RenderHtmlAsPdf(), w wyniku PDF nie wyświetlają się znaki emoji, mimo że poprawnie pojawiają się one w podglądach wydruku przeglądarki i HTML jest prawidłowo zakodowany jako UTF-8.
Metoda oparta na ciągach znakowych RenderHtmlAsPdf() ma ograniczenia w obsłudze Unikodu, które powodują, że znaki emoji nie są uwzględniane w wynikowych PDF. Renderowanie oparte na plikach przetwarza treść w kontekście bliższym realnej przeglądarki, co poprawia obsługę Unicode i emotikonów.
Rozwiązanie
Option 1: Use RenderHtmlFileAsPdf()
Zapisz zawartość HTML do tymczasowego pliku i renderuj ze ścieżki pliku, zamiast korzystać z ciągu:
string tempPath = Path.GetTempFileName() + ".html";
File.WriteAllText(tempPath, htmlContent, System.Text.Encoding.UTF8);
var renderer = new ChromePdfRenderer();
PdfDocument pdf = renderer.RenderHtmlFileAsPdf(tempPath);
File.Delete(tempPath);
pdf.SaveAs("output.pdf");
string tempPath = Path.GetTempFileName() + ".html";
File.WriteAllText(tempPath, htmlContent, System.Text.Encoding.UTF8);
var renderer = new ChromePdfRenderer();
PdfDocument pdf = renderer.RenderHtmlFileAsPdf(tempPath);
File.Delete(tempPath);
pdf.SaveAs("output.pdf");
Imports System.IO
Imports System.Text
Imports IronPdf
Dim tempPath As String = Path.GetTempFileName() & ".html"
File.WriteAllText(tempPath, htmlContent, Encoding.UTF8)
Dim renderer As New ChromePdfRenderer()
Dim pdf As PdfDocument = renderer.RenderHtmlFileAsPdf(tempPath)
File.Delete(tempPath)
pdf.SaveAs("output.pdf")
Opcja 2: Konwertuj emotikony na numeryczne encje HTML
Zastąp znaki emoji ich numerycznymi odpowiednikami encji HTML przed renderowaniem:
👋
😊
👋
😊
Opcja 1 unika wielokrotnych wyszukiwań encji, gdy szablon zawiera wiele znaków emoji.

