asp.net mvc - How can I force itextsharp ITextHandler.Parse to use UTF-8? -


i have code rendering pdf on asp.net mvc server, characters example e accent (ě) not shown correctly. library use itextsharp-lgpl nuget.

the pdf rendering code is:

protected actionresult viewpdf(object model) {     // http://www.codeproject.com/articles/66948/rendering-pdf-views-in-asp-mvc-using-itextsharp     // create itextsharp document.     document doc = new document();     // set document write memory.     memorystream memstream = new memorystream();     pdfwriter writer = pdfwriter.getinstance(doc, memstream);     writer.closestream = false;     doc.open();      // render view xml string, parse string xml dom.     string xmltext = this.renderactionresulttostring(this.view(model));     xmldocument xmldoc = new xmldocument();     xmldoc.innerxml = xmltext.trim();      // parse xml itextsharp document.     itexthandler texthandler = new itexthandler(doc);     texthandler.parse(xmldoc);      // close , resulted binary data.     doc.close();     byte[] buf = new byte[memstream.position];     memstream.position = 0;     memstream.read(buf, 0, buf.length);      // send binary data browser.     return new binarycontentresult(buf, "application/pdf"); } 

the helper method of controller this:

public class pdfcontrollerbase : controller {     protected string renderactionresulttostring(actionresult result)     {         // create memory writer.         var sb = new stringbuilder();         var memwriter = new stringwriter(sb);                      // create fake http context render view.         var fakeresponse = new httpresponse(memwriter);         var fakecontext = new httpcontext(system.web.httpcontext.current.request, fakeresponse);         var fakecontrollercontext = new controllercontext(             new httpcontextwrapper(fakecontext),             this.controllercontext.routedata,             this.controllercontext.controller);         var oldcontext = system.web.httpcontext.current;         system.web.httpcontext.current = fakecontext;          // render view.         result.executeresult(fakecontrollercontext);          // restore data.         system.web.httpcontext.current = oldcontext;          // flush memory , return output.         memwriter.flush();         string content = sb.tostring();         return content;     } } 

the view looks like:

@model mynamespace.model.mymodel  @{     layout = null; } <?xml version="1.0" encoding="utf-8" ?> <itext creationdate="2/4/2015 5:49:07 pm" producer="itextsharpxml">     <paragraph leading="18.0" font="arial" size="16.0" align="center">         <chunk>@model.title</chunk><newline /><newline />     </paragraph>     <paragraph leading="18.0" font="arial" size="10.0" align="justify">         <chunk>@model.textdetail</chunk><newline />             </paragraph>    </itext> 

i tried add following code pdf rendering, not help:

string arial = path.combine(environment.getfolderpath(environment.specialfolder.fonts), "arial.ttf"); fontfactory.register(arial, "arial"); 


Comments

Popular posts from this blog

dns - How To Use Custom Nameserver On Free Cloudflare? -

python - Pygame screen.blit not working -

c# - Web API response xml language -