#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