RenderHtmlAsPdf()を使用した場合にIronPDFにエモジがレンダリングされない
HTMLをRenderHtmlAsPdf()を使用してレンダリングする際に、絵文字文字を含む場合、ブラウザの印刷プレビューでは正しく表示され、HTMLがUTF-8として正しくエンコードされているにもかかわらず、生成されるPDFには絵文字が表示されません。
文字列ベースのRenderHtmlAsPdf()メソッドには、Unicodeの取り扱いに制限があり、出力されるPDFから絵文字が削除される原因となります。 ファイルベースのレンダリングは、内容が実際のブラウザに近いコンテクストで処理されるため、Unicodeおよびエモジ処理が向上します。
解決策
オプション1: RenderHtmlFileAsPdf()を使用
HTMLコンテンツを一時ファイルに書き込み、そのファイルパスからレンダリングします:
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")
オプション2: エモジを数値HTMLエンティティに変換
エモジ文字をレンダリングする前に、その数値HTMLエンティティ相当へ変換してください:
👋
😊
👋
😊
オプション1は、テンプレートに多くのエモジ文字が含まれる場合に、繰り返しエンティティ検索を避けられます。

