itachi
itachi

Reputation: 13

Input is not a valid base64 string exception occurred when parsing HTML string in C#

I am parsing an HTML string using HTMLworker in C#. these are the libaries I am using,

using iTextSharp.text;
using iTextSharp.text.html.simpleparser;
using iTextSharp.text.pdf;

This is how I am parsing the data:

    Document pdfDoc = new Document(PageSize.A4);    
    HTMLWorker htmlparser = new HTMLWorker(pdfDoc);        
        sb1.Append(@"<img src='data:image/png;charset=utf-8;base64, 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' runat='server' alt='myimage'>");
    
WebRequest.RegisterPrefix("data", new DataWebRequestFactory()); // this is to register new prefix
using (StringReader srb = new StringReader(sb1.ToString()))
    {
       htmlparser.Parse(srb); //here I am getting an exception  
    }

Here I register new prefix 'data' to get rid of the 'uri prefix not recognized' exception, as explained here: Getting exception while using itextsharp to convert from html to pdf in web api

But now I am getting a new exception that 'Input is not a valid base64 string'. Please suggest how to solve this. Thank you.

Upvotes: 0

Views: 388

Answers (1)

jakjakjakjakjak
jakjakjakjakjak

Reputation: 114

You should remove everything in front of and including the first comma.

So change your

sb1.Append(@"<img src='data:image/png;charset=utf-8;base64, iVBORw0KGgoAAAANSUhEUgAAAIAAAACACAYAAADDPmHLAAAAAXNSR0IArs4c6QAAAARn.....);

to

sb1.Append(@"<img src='iVBORw0KGgoAAAANSUhEUgAAAIAAAACACAYAAADDPmHLAAAAAXNSR0IArs4c6QAAAARn.....);

Upvotes: 0

Related Questions