Ссылка на объект не установлена ​​на экземпляр объекта в iTextSharp, отслеживаемом в Stackify - PullRequest
1 голос
/ 11 июля 2020
• 1000 . Код для создания HTML в PDF, как показано ниже:
XMLWorkerHelper.GetInstance().ParseXHtml(writer, pdfDoc, srHtml);

Более того, у меня есть последняя версия iTextsharp

Install-Package iTextSharp -Version 5.5.13.1

, если кто-то знает или сталкивался с такой проблемой, пожалуйста, помогите мне :)

Я добавил сейчас полный метод для создания PDF с снимок стека :

public void GeneratePDF()
{
    try
    {
        string Pathinit = string.Empty;
        Pathinit = Convert.ToString(System.Configuration.ConfigurationManager.AppSettings["FileSystemDirectoryPath"]);
        
        var html = @"<!DOCTYPE html><html lang=""en"" xmlns=""http://www.w3.org/1999/xhtml""><head><meta charset=""utf-8"" /><title></title></head><body>";
        html += "</body></html>";
        
        Random rnd = new Random();
        int     rnd_num = rnd.Next(100000);
        StringWriter sw = new StringWriter();
        HtmlTextWriter hw = new HtmlTextWriter(sw);
        pnlfrPdf.RenderControl(hw);
        StringReader sr = new StringReader(sw.ToString());
        Document pdfDoc = new Document();

        ConsumerHelper MethodObjCH = new ConsumerHelper();

        var writer = PdfWriter.GetInstance(pdfDoc, new FileStream(Server.MapPath("Sample-PDF-File-" + rnd_num + ".pdf"), FileMode.Create));

        string text = string.Empty;
        int count = 0;
        string line;
        while ((line = sr.ReadLine()) != null)
        {
            count++;
            text += line;
        }
        html = text;

        using (var srHtml = new StringReader(html))
        {
            pdfDoc.Open();
            var parserInstance = XMLWorkerHelper.GetInstance();
            if (parserInstance != null)
            {
                parserInstance.ParseXHtml(writer, pdfDoc, srHtml);
            }

            pdfDoc.Close();
        }
    }
    catch (Exception ex)
    {
        throw ex;
    }
}

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

1 Ответ

0 голосов
/ 11 июля 2020

Метод, который вы вызываете, XMLWorkerHelper.GetInstance (), скорее всего, возвращает нулевой объект. Вы можете сначала проверить, почему это так. Однако небольшое редактирование кода предотвратит появление этого исключения.

Когда вы пытаетесь вызвать ParseX Html для нулевого объекта, вы получаете исключение NullReferenceException. Чтобы решить эту проблему, вы можете использовать синтаксис проверки на null или проверить на null следующим образом:

var parserInstance = XMLWorkerHelper.GetInstance();
if (parserInstance != null)
{
      parserInstance.ParseXHtml(writer, pdfDoc, srHtml);
}

Другой способ, который зависит от версии C#, которую вы используете, и требует использования вопроса -знак, чтобы проверить, является ли он нулевым, прежде чем переходить к следующему оператору, например:

XMLWorkerHelper.GetInstance()?.ParseXHtml(writer, pdfDoc, srHtml);

Не стесняйтесь пробовать любой метод, который вам подходит.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...