Путь не является юридической формой, iTextSharp и VB.NET

0

Я нашел проблему, когда я попробовал этот ответ в VB.NET (немного изменен):

Function HtmlToPDF(ByVal Url As String) As MemoryStream
     Dim wc As New WebClient
     Dim htmlText = wc.DownloadString(Url)

     Dim msOutput As New MemoryStream
     Dim reader As New StringReader(htmlText)

     Dim document As New Document(PageSize.A4, 30, 30, 30, 30)

     PdfWriter.GetInstance(document, msOutput)

     Dim worker As New HTMLWorker(document)

     document.Open()

     worker.StartDocument()

     worker.Parse(reader)

     worker.EndDocument()
     worker.Close()
     document.Close()

     Return msOutput
End Function

Я получил ошибку, путь не является юридической формой в этом коде:

worker.Parse(reader)

Я проверяю reader значений в отладке Nothing/NULL но в моем htmlText есть значение.

Затем я попробовал другой код, но ошибка все же такая же, как и раньше. Это код:

Function HtmlToPDF(ByVal Url As String) As MemoryStream
     Dim wc As New WebClient
     Dim htmlText = wc.DownloadString(Url)

     Dim msOutput As New MemoryStream

     Dim document As New Document(PageSize.A4, 30, 30, 30, 30)

     PdfWriter.GetInstance(document, msOutput)

     document.Open()

     Response.Write(htmlText)

     Dim htmlArrayList As New List(Of IElement)
     htmlArrayList = HTMLWorker.ParseToList(New StringReader(htmlText), Nothing)

     For k As Integer = 0 To htmlArrayList.Count()
        document.Add(htmlArrayList(k))
     Next

     document.Close()

     Return msOutput
End Function

Ошибка такая же в этом коде: HTMLWorker.ParseToList(New StringReader(htmlText), Nothing)

В чем проблема? VB.NET новичок здесь, спасибо заранее.

Теги:
pdf
itextsharp

1 ответ

0

Проверьте свои пути в любом теге изображения, который у вас есть в html. а также проверять такие вещи, как теги <hr>

В настоящее время я получаю ту же ошибку, потому что файл на самом деле не существует на сервере в каком-то html, который я пытаюсь разобрать.

например, "/images/logo.png" не существует на моем сервере разработки. (помните, что htmlparser не может обрабатывать относительные URL-адреса. URL-адреса любого img-тега src должны быть абсолютными URL-адресами

http://kuujinbo.info/iTextSharp/tableWithImageToPdf.aspx

и я получаю ошибку.

Я также получаю исключение NullReferenceException с тегами <hr>, если вы отлаживаете визуальную студию, пройдите до тех пор, пока не произойдет исключение, нажмите "просмотреть сведения об исключении" и затем щелкните в трассировке стека. В моем примере с <hr> im получение

at iTextSharp.text.html.simpleparser.HTMLWorker.CreateLineSeparator(IDictionary'2 attrs)
   at iTextSharp.text.html.simpleparser.HTMLTagProcessors.HTMLTagProcessor_HR.StartElement(HTMLWorker worker, String tag, IDictionary'2 attrs)
   at iTextSharp.text.html.simpleparser.HTMLWorker.StartElement(String tag, IDictionary'2 attrs)
   at iTextSharp.text.xml.simpleparser.SimpleXMLParser.ProcessTag(Boolean start)
   at iTextSharp.text.xml.simpleparser.SimpleXMLParser.Go(TextReader reader)
   at iTextSharp.text.xml.simpleparser.SimpleXMLParser.Parse(ISimpleXMLDocHandler doc, ISimpleXMLDocHandlerComment comment, TextReader r, Boolean html)
   at iTextSharp.text.html.simpleparser.HTMLWorker.Parse(TextReader reader)
   at iTextSharp.text.html.simpleparser.HTMLWorker.ParseToList(TextReader reader, StyleSheet style, IDictionary'2 tags, Dictionary'2 providers)
   at iTextSharp.text.html.simpleparser.HTMLWorker.ParseToList(TextReader reader, StyleSheet style, Dictionary'2 providers)
   at Health.Management.Web.Site.FileDownload.Download(String content, iTextSharpHeaderFooter hf, Int32 type, Boolean preview, String previewText) in

кстати, старый HTMLWorker.Parse лишен, и вы должны использовать нового рабочего xml. Я использую его (старый парсер) как резерв при попытке обработать устаревший (плохо отформатированный) html-код.

Отличные примеры использования iTextSharp можно найти здесь:

http://kuujinbo.info/code_index.aspx?tab=2

Ещё вопросы

Сообщество Overcoder
Наверх
Меню