使用RenderHtmlAsPdf()时IronPDF中表情符号不呈现

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

使用RenderHtmlAsPdf()渲染包含表情符号字符的HTML时,生成的PDF不显示表情符号字符,尽管它们在浏览器打印预览中显示正确且HTML正确编码为UTF-8。

基于字符串的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")
$vbLabelText   $csharpLabel

选项2:将表情符号转换为数字HTML实体

在渲染之前将表情符号字符替换为其数字HTML实体等效物:


👋

😊

👋

😊
HTML

选项1避免了当模板包含许多表情符号字符时反复进行实体查找。

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文件。