In the following code, the Chinese font (containing html text) is not displayed in pdf format. I am also trying to use styles and fonts in this method. Help solve this problem. Thanks in advance to everyone.
public static bool GeneratedPDF(string strHTMLText, string filename, string action, string rpttype) { bool blnReturn = false; string fontpath = HttpContext.Current.Server.MapPath("~/files/fonts/"); string filepath = HttpContext.Current.Server.MapPath("~/files/pdf/"); BaseFont customfont = BaseFont.CreateFont(fontpath + "simhei.ttf", BaseFont.IDENTITY_H, BaseFont.EMBEDDED); Font font = new Font(customfont, 12); //List<iTextSharp.text.IElement> htmlarraylist = iTextSharp.text.html.simpleparser.HTMLWorker.ParseToList(new System.IO.StringReader(strHTMLText), null); iTextSharp.text.Document document = new iTextSharp.text.Document(); if (rpttype.Trim().ToUpper() == "REPORT") document = new iTextSharp.text.Document(iTextSharp.text.PageSize.A2.Rotate()); else if (rpttype.Trim().ToUpper() == "GRID") document = new iTextSharp.text.Document(iTextSharp.text.PageSize.A4.Rotate()); else document = new iTextSharp.text.Document(iTextSharp.text.PageSize.LETTER); iTextSharp.text.pdf.PdfWriter writer = iTextSharp.text.pdf.PdfWriter.GetInstance(document, new FileStream(filepath + "\\" + filename, FileMode.Create)); document.Open(); iTextSharp.text.html.simpleparser.StyleSheet styles = new iTextSharp.text.html.simpleparser.StyleSheet(); styles.LoadTagStyle("body", "font-family", "verdana"); styles.LoadStyle("body", "font-size", "5px"); List<iTextSharp.text.IElement> htmlarraylist = iTextSharp.text.html.simpleparser.HTMLWorker.ParseToList(new System.IO.StringReader(strHTMLText), styles); for (int k = 0; k < htmlarraylist.Count; k++) { document.Add((IElement)htmlarraylist[k]); } iTextSharp.text.Paragraph p = new iTextSharp.text.Paragraph(); p.InsertRange(0, htmlarraylist); p.Font = font; // font does not work document.Add(p); document.Close(); blnReturn = true; return blnReturn; }
source share