Как установить шрифт в itextSharp для HTML в PDF - PullRequest
1 голос
/ 05 марта 2012

Мне нужно создать pdf во время выполнения из html в веб-приложении, разработанном в VB.Net и MSSQL 2005, с использованием itextSharp.

HTML-код сохраняется в базе данных.который содержит гуджарати, хинди и английский язык.

Может кто-нибудь сказать мне, как установить шрифт для HTML и какие шрифты я должен использовать для этого дисплея Enlgish, Gujarati и Hindi Я пробовал Arial Unicode MS, но он не отображает хинди точно.

Заранее спасибо

вот код метода, который я использую для преобразования html-строки в pdf-файл, который пользователь может сохранить на локальном компьютере.

Private Sub ExporttoPDF(ByVal FullHtml As String, ByVal fileName As String)
    Try
            Response.Clear()    ' Clear Response and set content type and disposition so that user get save file dialogue. 
            Response.ContentType = "application/pdf"
            Response.AddHeader("content-disposition", String.Format("attachment;filename={0}.pdf", fileName))
            Response.Cache.SetCacheability(HttpCacheability.NoCache)


            Dim sr As StringReader = New StringReader(FullHtml)
            Dim pdfDoc As iTextSharp.text.Document = New iTextSharp.text.Document(PageSize.A4.Rotate, 10, 10, 10, 10)
            Dim htmlparser As HTMLWorker = New HTMLWorker(pdfDoc)
            PdfWriter.GetInstance(pdfDoc, Response.OutputStream)
            pdfDoc.Open()
            Dim fontpath As String = System.Web.HttpContext.Current.Request.PhysicalApplicationPath + "\fonts\ARIALUNI.TTF" 
            '  "ARIALUNI.TTF" file copied from fonts folder and placed in the folder
            Dim bf As BaseFont = BaseFont.CreateFont(fontpath, BaseFont.IDENTITY_H, BaseFont.EMBEDDED)

            FontFactory.RegisterDirectory( System.Web.HttpContext.Current.Request.PhysicalApplicationPath , True)

            FontFactory.Register(fontpath, "Arial Unicode MS")
            FontFactory.RegisterFamily("Arial Unicode MS", "Arial Unicode MS", fontpath)    

            'parse html from String reader "sr"
            htmlparser.Parse(sr)
            pdfDoc.Close()
            Response.Write(pdfDoc)
            Response.End()

    Catch ex As Exception
        Throw ex
    End Try
End Sub

Вот как я использую код

dim htmlstring as string = "<html><body encoding=""" + BaseFont.IDENTITY_H + """ style=""font-family:Arial Unicode MS;font-size:12;""> <h2> set Font in itextSharp for HTML to PDF  </h2> <span> I (aneel/અનિલ/अनिल) am facing problem to create a pdf from html that contains enlish, ગુજરાતી, हिंदी and other unicode characters.  </span> </body></html>"         
ExporttoPDF(htmlstring ,"sample.pdf")   

В результате для гуджарати он отображает અનલિ где, как и ожидалось, અનિલ

Где, как и для хинди, он отображает अनलि где и должен быть should.

Ответы [ 2 ]

1 голос
/ 05 марта 2012

попробуйте

pdfDoc.Add(New Header(iTextSharp.text.html.Markup.HTML_ATTR_STYLESHEET, “yourcssfile.css”)) // or path to your css file

, затем

Dim styles As iTextSharp.text.html.simpleparser.StyleSheet
styles = New iTextSharp.text.html.simpleparser.StyleSheet
styles.LoadTagStyle("ol", "leading", "16")

вы можете добавить все к стилям.затем замените html.parse этим

HTMLWorker.ParseToList(New StreamReader("htmlpath.html", Encoding.Default), styles);
0 голосов
/ 05 марта 2012

К сожалению, вам не повезло. Смотрите здесь . По сути, разработчики iText неоднократно обращались с просьбами о внесении кода для поддержки лигатур, необходимых для правильного отображения индийских языков в PDF, но никто не вызвался помочь.

...