在 iTextSharp pdf 中显示中文文本来自 html c#

Display Chinese Text in iTextSharp pdf from html c#

我想在 c# 中使用 itextsharp 显示从 html 到 pdf 的中文文本

HTML 中的文本是正确可见的,但是当我尝试从 iTextSharp 中的 Xml 解析器制作 pdf 时,它没有显示中文文本。

UTF8 编码工作不正常。我也给了 Encoding.UTF8 但它也不起作用。

下面是我从 html.

生成 PDF 的代码
 public static byte[] HtmlToPDFConvert(string baseHtml, Rectangle pageSize)
 {
        Stream htmlStream = new MemoryStream(Encoding.UTF8.GetBytes(baseHtml ?? ""));

        Document pdfDoc = new Document(pageSize, 18f, 18f, 18f, 18f);
        using (MemoryStream memoryStream = new MemoryStream())
        {
            PdfWriter writer = PdfWriter.GetInstance(pdfDoc, memoryStream);
            pdfDoc.Open();

            XMLWorkerHelper.GetInstance().ParseXHtml(writer, pdfDoc, htmlStream, null, Encoding.UTF8, FontFactory.FontImp);
            pdfDoc.Close();

            byte[] bytes = memoryStream.ToArray();
            memoryStream.Close();

            return bytes;
        }
 }

由于 Xmlworker 已被 pdfHTML 弃用,我已改用它。

唯一的技巧 是指向支持您要使用的字形的字体。

ConverterProperties props = new ConverterProperties();
FontProvider fontProvider = new DefaultFontProvider(true, true, true);
fontProvider.AddFont("fonts/NotoSansCJKjp-Regular.otf");
props.SetFontProvider(fontProvider);
PdfDocument doc = new PdfDocument(new PdfWriter(DEST));
HtmlConverter.ConvertToPdf(new FileStream(ORIG, FileMode.Open), doc, props);