在 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);
我想在 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);