Ошибка преобразования HTML-текста в PDF-файл с использованием itextsharp в asp.net

#asp.net #itext #pdf-generation #html-to-pdf

#asp.net #itext #генерация pdf #html-to-pdf

Вопрос:

Я использую следующий код для преобразования содержимого в редакторе (Ajax control) в pdf,

 using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;

using System.IO;
using iTextSharp.text.html.simpleparser;
using iTextSharp.text;
using iTextSharp.text.pdf;
using iTextSharp.text.html;
/// <summary>
/// Summary description for pdfgeneration
/// </summary>
public class pdfgeneration
{
    public pdfgeneration()
    {
        //
        // TODO: Add constructor logic here
        //
    }

    public void pdfgenerator(String name1, AjaxControlToolkit.HTMLEditor.Editor Editor1)
    {

        HttpContext.Current.Response.Clear();
        HttpContext.Current.Response.ContentType = "application/pdf";
        // Create PDF document
        Document pdfDocument = new Document(PageSize.A4, 70, 55, 40, 25);

        PdfWriter wri = PdfWriter.GetInstance(pdfDocument, new FileStream("e://"  name1   ".pdf", FileMode.Create));

        PdfWriter.GetInstance(pdfDocument, HttpContext.Current.Response.OutputStream);

        pdfDocument.Open();
        string htmlText = Editor1.Content;
        System.Collections.Generic.List<IElement> htmlarraylist = HTMLWorker.ParseToList(new StringReader(htmlText), null);

        for (int k = 0; k < htmlarraylist.Count; k  )
        {
            pdfDocument.Add((IElement)htmlarraylist[k]);
        }

        pdfDocument.Close();
        HttpContext.Current.Response.End();
    }


}
  

Я изначально жестко кодирую следующий HTML-текст в редакторе (элемент управления Ajax),

 String editorcontent = "<br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/>"  
                 "<br/>"   "<P align='center'><b>"   courtname   "</b></P>"
                  "<br/><P align='center'>(Before"   jname   ","   desname   ")"
                  "<br/>"   "<P align='right'><b><u>"   DropDownList1.SelectedItem   " no. "   TextBox1.Text   "/"   TextBox2.Text   "</u></b>amp;nbsp;amp;nbsp;amp;nbsp;amp;nbsp;amp;nbsp;</P>"
                  "<br />"
  **//this table is the problem//**      "<table><tr><td width='750px'><p align='left'>"   petitioner   "</p>"   "</td><td>"   "<p align='right'>"   "..Applicant"   "</p>"   "</td></tr>"   "<tr><td><p align='center'>"   "V/s"   "</p>"   "</td><td></td>"   "</tr>"   "<tr><td width='75px'><p align='left'>"   respondent   "</p>"   "</td><td>"   "<p align='right'>"   "..Respondent"   "</p>"   "</td></tr></table>"
                  "<br/><P align='center'><b><u>ORDER</u></b>";
            Editor1.Content = editorcontent;
  

Если я удалю следующее table из приведенного выше кода, то pdf будет сгенерирован успешно. но как только я включаю это table в свой HTML-код, я получаю следующую ошибку

введите описание изображения здесь

Как решить мою проблему.

Комментарии:

1. возможно, потребуется добавить <tbody></tbody>.

2. @Govind Камалапракаш Мальвия, где именно?

3. <таблица><tbody> …. </tbody></таблица>

4. @Govind KamalaPrakash Malviya Извините, это не сработало.

5. Точный дублирующий вопрос от того же пользователя. Grr.

Ответ №1:

текущая версия iTextSharp не поддерживает ширину ячейки, указанную в ‘px’. он не поддерживает ширину ячеек в процентах или только числовую.

когда вы пытались жестко кодировать HTML-содержимое, в двух местах было ‘px’:

  1. <td width='750px'>
  2. <td width='75px'>

удалите ‘px’, и все будет в порядке.