How to do to display Chinese font in pdf using iTextSharp?

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; } 
+4
source share
1 answer

You have incorrectly installed StyleSheet . It should be something like this:

 string html = @" <html><body> <p>使用iText做PDF文件輸出</p> <p>使用iText做PDF文件輸出</p> <p>使用iText做PDF文件輸出</p> <p>使用iText做PDF文件輸出</p> <p>使用iText做PDF文件輸出</p> </body></html> "; FontFactory.Register("c:/windows/fonts/ARIALUNI.TTF"); StyleSheet style = new StyleSheet(); style.LoadTagStyle("body", "face", "Arial Unicode MS"); style.LoadTagStyle("body", "encoding", BaseFont.IDENTITY_H); using (Document document = new Document()) { PdfWriter writer = PdfWriter.GetInstance( document, Response.OutputStream ); document.Open(); foreach(IElement element in HTMLWorker.ParseToList( new StringReader(html.ToString()), style)) { document.Add(element); } } 

You need to change the third parameter LoadTagStyle() above to the correct name of the font used. In other words, replace “Arial Unicode MS” with the font name / value above. Or you can also use a font.

+6
source

Source: https://habr.com/ru/post/1387711/


All Articles