在iTextSharp pdf中以html c#显示中文文本

时间:2019-12-26 09:15:52

标签: c# itext pdf-generation xmlworker

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

HTML中的文本是正确可见的,但是当我尝试从iTextSharp中的Xml Parser制作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;
        }
 }

1 个答案:

答案 0 :(得分:1)

由于pdfHTML不推荐使用Xmlworker,因此我改用了它。

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

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);
相关问题