Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Rotativa / Wkhtmltopdf images not displaying

I am currently creating an MVC 4 web application.

I have an action that has a base background image which is always the same then an arrow image which changes in degrees depending on the information that is collected within the action.

I call this action using

<img src="@Url.Action("trend-image", "NonReg_Reports")" alt="background" width="245" height="105" />

This works fine when it is called and is just displaying a HTML webpage. It gives me the HTML.

<img src="/nonreg-report/01495344/trend-image" alt="background" width="245" height="105">

I am then using Rotativa / Wkhtmltopdf to convert this HTML page into a PDF. This runs the same piece of code as above.

The problem is I am just getting a white box with the alternative text in it if I use the code above.

If I use <img src="~/Content/images/trend_back_medium.png" alt="astuff" /> which is the actual background image in my project it works fine.

The image from the code above can not be saved anywhere due to how it is used. I am thinking that it is a path problem, but after trying lots of different things I can still not get it to work.

Any suggestions or help would be greatly appreciated Thank you.

like image 929
user1866606 Avatar asked Jan 04 '13 16:01

user1866606


2 Answers

I had the same problem. Normal html view was ok with pictures, pdf was not display it. I used Server.MapPath to point to picture and it was ok...

<img src="@Server.MapPath("~/Folder/SubFolder/Subfolder/ImageName.png")" />

I hope this will help

Adam

like image 157
adam Avatar answered Sep 18 '22 16:09

adam


I faced the same problem and I found a workaround, not a nice one, but it suits my needs.

It seems that Rotativa(Wkhtmltopdf?) have a problem with images which are returned from http handler (at least my case). So to handle this situation, in controller action before return new ViewAsPdf... my code manually save file to some local 'temp' folder and replace 'src' of images in rendered view with paths to that local files in server path manner, eg: http://localhost/img/temp/trend-image.png. This is not a nice solution, if you already found better one, let me know.

like image 34
psulek Avatar answered Sep 19 '22 16:09

psulek