itextSharp - html to pdf some turkish characters are missing

后端 未结 3 497
清酒与你
清酒与你 2020-12-10 22:51

When I am trying to generate PDF from HTML, some Turkish characters like ĞÜŞİÖÇ ğüşıöç are missing in PDF, I see a space in place of these characte

相关标签:
3条回答
  • 2020-12-10 23:21

    Same my problem solved this code;

    var pathUpload = Server.MapPath($"~/Test.pdf");
    using (var fs = System.IO.File.Create(pathUpload))
    {
       using (var doc = new Document(PageSize.A4, 0f, 0f, 10f, 10f))
       {
           using (var writer = PdfWriter.GetInstance(doc, fs))
           {
               doc.Open();
               BaseFont baseFont = BaseFont.CreateFont("C:\\Windows\\Fonts\\Arial.ttf", "windows-1254", true);
               Font fontNormal = new Font(baseFont, 24, Font.NORMAL);
    
               var p = new Paragraph("Test paragrapgh İÇşıĞğŞçöÖ", fontNormal);
               doc.Add(p);
               doc.Close();
           }
       } }
    
    0 讨论(0)
  • 2020-12-10 23:24

    I had the same prolem after a few days of reserach;

    BaseFont myFont = BaseFont.CreateFont(@"C:\windows\fonts\arial.ttf", "windows-1254", BaseFont.EMBEDDED);  
    Font fontNormal = new Font(myFont);
    

    Eveytime you need to write a text having special characters, do it this way;

    doc.Add(new Paragraph("İıĞğŞşÜüÖöŞşÇç", fontNormal));     // a new paragraph
    results.Add(new ListItem("İıĞğŞşÜüÖöŞşÇç", fontNormal));  // a new list item
    

    additionally, this may be needed for itextsharp to let font change;

    using Font = iTextSharp.text.Font; 
    

    it works like a charm :)

    0 讨论(0)
  • 2020-12-10 23:41

    I have finally find a solution for this problem, by this you can print all Turkish character.

        String htmlText = html.ToString();
        Document document = new Document();
        string filePath = HostingEnvironment.MapPath("~/Content/Pdf/");
        PdfWriter.GetInstance(document, new FileStream(filePath + "\\pdf-"+Name+".pdf", FileMode.Create));
        document.Open();
    
        iTextSharp.text.html.simpleparser.HTMLWorker hw = new iTextSharp.text.html.simpleparser.HTMLWorker(document);
        FontFactory.Register(Path.Combine(_webHelper.MapPath("~/App_Data/Pdf/arial.ttf")),  "Garamond");   // just give a path of arial.ttf 
        StyleSheet css = new StyleSheet();
        css.LoadTagStyle("body", "face", "Garamond");
        css.LoadTagStyle("body", "encoding", "Identity-H");
        css.LoadTagStyle("body", "size", "12pt");
    
        hw.SetStyleSheet(css);
    
        hw.Parse(new StringReader(htmlText));
    
    0 讨论(0)
提交回复
热议问题