Создание PDF из персидского файла HTML с помощью ITextSharp

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

Для решения этой проблемы и проблемы справа налево я использую следующий код:

        Document document = new Document(PageSize.A4, 80, 50, 30, 65);
        PdfWriter.GetInstance(document, new FileStream(strPDFpath, FileMode.Create));
        document.Open();

        ArrayList objects;
        document.NewPage();

        var stream = new StreamReader(strHTMLpath, Encoding.Default).ReadToEnd();
        objects = iTextSharp.text.html.simpleparser.
        HTMLWorker.ParseToList(new StreamReader(strHTMLpath, Encoding.UTF8), styles);            

        BaseFont bf = BaseFont.CreateFont("c:\\windows\\fonts\\Tahoma.ttf",
                                        BaseFont.IDENTITY_H, true);
        for (int k = 0; k < objects.Count; k++)
        {
            PdfPTable table = new PdfPTable(1);
            table.RunDirection = PdfWriter.RUN_DIRECTION_RTL;

            var els = (IElement)objects[k];
            foreach (Chunk el in els.Chunks)
            {
                #region set persian font
               iTextSharp.text.Font f2 = new iTextSharp.text.Font(bf, el.Font.Size,
                                                el.Font.Style, el.Font.Color);
                el.Font = f2;
                #endregion set persian font

                #region Set right to left for persian words
                PdfPCell cell = new PdfPCell(new Phrase(10, el.Content, el.Font));
                cell.BorderWidth = 0;
                table.AddCell(cell);
                #endregion Set right to left for persian words
            }
            //document.Add((IElement)objects[k]);                
            document.Add(table);
        }

        document.Close();
        Response.Write(strPDFpath);
        Response.ClearContent();
        Response.ClearHeaders();
        Response.AddHeader("Content-Disposition", "attachment; filename=" + strPDFpath);
        Response.ContentType = "application/octet-stream";
        Response.WriteFile(strPDFpath);
        Response.Flush();
        Response.Close();
        if (File.Exists(strPDFpath))
        {
            File.Delete(strPDFpath);
        }

Мой справа налево и конвертирую персидские слова был решен, но возникла другая проблема.

Мой алгоритм не может анализировать и преобразовывать содержимое тега таблицы, который используется в файле html.

Теперь вопрос: как проанализировать файл HTML, который имеет тег таблицы, div и тег абзаца с предложением на персидском языке и преобразовать его в pdf?

6
задан Kia.sos 8 February 2011 в 12:28
поделиться