Невозможно привести объект типа ‘iTextSharp.text.pdf.PdfWriter’ к типу ‘iTextSharp.tool.xml .IElementHandler’

#vb.net #pdf

#vb.net #PDF

Вопрос:

Я пытаюсь записать HTML-строку во вновь созданный PDF-файл, но получаю следующую ошибку: невозможно привести объект типа ‘iTextSharp.text.pdf.PdfWriter’ к типу ‘iTextSharp.tool.xml .IElementHandler’.

код:

 Dim doc As text.Document
Dim output As New MemoryStream
doc = New text.Document(text.PageSize.A4, 0, 0, 50, 50)
Dim fileName As String = "~/Invoices/"   invoiceNumber   ".pdf"

Dim writer As text.pdf.PdfWriter = text.pdf.PdfWriter.GetInstance(doc, New FileStream(Server.MapPath(fileName), FileMode.Create))

doc.AddTitle("PPN Rebate Invoice")
doc.AddAuthor("PPN")
doc.Open()

Dim reader As TextReader = New StringReader(html)

XMLWorkerHelper.GetInstance().ParseXHtml(writer, reader)
  

Это мой первый раз, когда я использую iTextSharp.dll не уверен, чего я не понимаю или делаю неправильно

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

1. Может быть, вы пробовали одну из других перегрузок XMLWorkerHelper.GetInstance().ParseXHtml(writer, doc, reader) ?

2. Он пытается преобразовать документ в поток, а программу чтения в кодировку: значение типа ‘iTextSharp.text. Документ’ не может быть преобразован в ‘System.IO.Stream’ Значение типа ‘System.IO.TextReader’ не может быть преобразовано в ‘System.Text.Encoding’

Ответ №1:

Вот рабочий пример — вставьте в новое консольное приложение, чтобы попробовать. Я добавил рабочие пакеты iTextSharp и iTextSharp XML из NuGet. Обратите ParseXHtml внимание, что используется другая перегрузка.

 Imports System.IO
Imports iTextSharp.text
Imports iTextSharp.text.pdf
Imports iTextSharp.tool.xml

Module Module1

    Sub Main()
        Dim fileName As String = "C:DevSO.pdf"
        Using doc = New Document(PageSize.A4, 0, 0, 50, 50)
            Using writer As PdfWriter = PdfWriter.GetInstance(doc, New FileStream(fileName, FileMode.Create))
                doc.Open()
                doc.AddTitle("PPN Rebate Invoice")
                doc.AddAuthor("PPN")
                Dim html = "<!DOCTYPE html><html><head><title>Test</title></head><body><p>This is a test.</p></body></html>"
                Using reader As TextReader = New StringReader(html)
                    XMLWorkerHelper.GetInstance().ParseXHtml(writer, doc, reader)
                End Using
                doc.Close()
            End Using
        End Using
    End Sub

End Module