我想通过在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;
}
}
答案 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);