DinkToPdf
DinkToPdf copied to clipboard
Images are not shown
Hi I'm creating a PDF from Html file and the images are not shown. How can I convert an html file with images?
Please provide HTML that you are trying to convert.
@wgutierrezr did you use an img
tag and and point the src
to a https
url? If so, try http
if possible. Worked for me.
can I add an image in the header?
here are my header settings:
HeaderSettings = { FontSize = 12, Left = "Name", Right = "<img
src='http://abc.com/Images/logo.gif'/>My Compnay", Line = true, Spacing = 2.812 }
But it is rendering img tag as it is. Any ideas?
For me, just works if I set the complete image path in the html file like this example
omitted html code...
<img width=364 height=83 src="file:///C:/Projects/Printer/Dispatchment.API/Cartas/Model/image001.png" align=left hspace=12>
omitted html code...
Does not work for me either
<img width="110" height="96" src="images/badge.png" />
<img width="110" height="96" src="/images/badge.png" />
<img width="110" height="96" src="~/images/badge.png" />
<img width="110" height="96" src='@Url.Content("~/images/badge.png")' />
or any of the above using <image />
it also won't pick up a relative stylesheet link
<link rel="stylesheet" type="text/css" href="css/certificates.css">
<link rel="stylesheet" type="text/css" href="/css/certificates.css">
<link rel="stylesheet" type="text/css" href="~/css/certificates.css">
<link rel="stylesheet" type="text/css" href='@Url.Content("~/css/certificates.css")'>
Even though the page shows as expected in the browser.
The Stylesheet is not extremely bad an issue, however the image is a real pain … strange how it works on the google homepage though. Is it something to do with my environment or is this a bug?
Hello,
with asp.net core 2.1 app as a workaround i used
@{
var hst = Context.Request.Scheme + "://" + Context.Request.Host;
}
<link rel="stylesheet" href="@hst/lib/bootstrap/dist/css/bootstrap.css"/>
@omer-hatip
May I ask what method you used to render the razor engine. cshtml formatted as String?
Sorry, this is machine translation.
@leen2175
I used this Extension
public static class ControllerExtensions
{
public static async Task<string> RenderViewAsync<TModel>(this Controller controller, TModel model, string viewName = null, bool partial = false)
{
if (string.IsNullOrEmpty(viewName))
{
viewName = controller.ControllerContext.ActionDescriptor.ActionName;
}
controller.ViewData.Model = model;
using (var writer = new StringWriter())
{
IViewEngine viewEngine = controller.HttpContext.RequestServices.GetService(typeof(ICompositeViewEngine)) as ICompositeViewEngine;
ViewEngineResult viewResult = viewEngine.FindView(controller.ControllerContext, viewName, !partial);
if (viewResult.Success == false)
{
return $"A view with the name {viewName} could not be found";
}
ViewContext viewContext = new ViewContext(
controller.ControllerContext,
viewResult.View,
controller.ViewData,
controller.TempData,
writer,
new HtmlHelperOptions()
);
await viewResult.View.RenderAsync(viewContext);
return writer.GetStringBuilder().ToString();
}
}
}
then in controller action you can use it like :
var viewHtml = await this.RenderViewAsync(model, viewName);
@OmerHatip
thanks !
it is work for me!~
@rdvojmoc I have the same problem with printing images in an generated PDF file. I am using the example in code maze blog. (https://code-maze.com/create-pdf-dotnetcore/). I tried all the possible ways I know to show an image, but without any result. Any help? thanks.
Example: var objectSettings = new ObjectSettings { PagesCount = true, HtmlContent = templateGenerator.GetHtmlString(id), WebSettings = { DefaultEncoding = "utf-8", UserStyleSheet = Path.Combine(Directory.GetCurrentDirectory(), "Assets", "Styles.css"), LoadImages = true }, };
Problem is in your <img src='/Assets/logo.png' />
. This is relative path, for this to work you will need to provide absolute path to the image for example <img src='http://localhost:5000/Assets/logo.png' />
Thank you for the quick response! I appreciate it. Your suggestion did work for me! Thanks a lot! I also had to enable serving files from the \Assets folder located under the root folder of the site.
This is the Startup code for enabling multiple web roots:
// Enable serving files from the configured web root folder (i.e., WWWROOT)
app.UseStaticFiles();
// Enable serving files from \Assets located under the root folder of the site
app.UseStaticFiles(new StaticFileOptions()
{
FileProvider = new PhysicalFileProvider(
Path.Combine(Directory.GetCurrentDirectory(), @"Assets")),
RequestPath = new PathString("/Assets")
});
Problem is in your
<img src='/Assets/logo.png' />
. This is relative path, for this to work you will need to provide absolute path to the image for example<img src='http://localhost:5000/Assets/logo.png' />
@rdvojmoc can we set resolveRelativeLinks to true in dinkToPdf?
I use base64 image in html content ,not url; like this;
<img src="data: image/png; base64,iVBORw0KGgoAAAANSUhEUgAAAKcAAAAfCAYAAACCj930AAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAXnSURBVHhepY5RiiQxFMP6/peexQsCI5zURwRNZPtR9O/vkd/v9/+HA/3qYG107cH92kJ7+Lol4955va8M7jsH+9rJt75zsK+d7P2U7UDXN7z4K89fWX8w0K8O1kbXHtyvLbSHr1sy7p3X+8rgvnOwr5186zsH+9rJ3k/ZDnR9w4u/8vyV9QcD/epgbXTtwf3aQnv4uiXj3nm9rwzuOwf72sm3vnOwr53s/ZTtQNc3vPgrz19ZfzDQrw7WRtce3K8ttIevWzLundf7yuC+c7CvnXzrOwf72sneT9kOdH3Di7/y/JX1BwP96mBtdO3B/dpCe/i6JePeeb2vDO47B/vaybe+c7Cvnez9lO1A1ze8+CvPX1l/MNCvDtZG1x7cry20h69bMu6d1/vK4L5zsK+dfOs7B/vayd5P2Q50fcOLv/L8lfUHA/3qYG107cH92kJ7+Lol4955va8M7jsH+9rJt75zsK+d7P2U7UDXN7z4K89fWX8w0K8O1kbXHtyvLbSHr1sy7p3X+8rgvnOwr5186zsH+9rJ3k/ZDnR9w4u/8vyV9QcD/epgbXTtwf3aQnv4uiXj3nm9rwzuOwf72sm3vnOwr53s/ZTtQNc3vPgrz19ZfzDQrw7WRtce3K8ttIevWzLundf7yuC+c7CvnXzrOwf72sneT9kOdH3Di7/y/JX1BwP96mBtdO3B/dpCe/i6JePeeb2vDO47B/vaybe+c7Cvnez9lO1A1ze8+CvPX1l/MNCvDtZG1x7cry20h69bMu6d1/vK4L5zsK+dfOs7B/vayd5P2Q50fcOLv/L8lfUHA/3qYG107cH92kJ7+Lol4955va8M7jsH+9rJt75zsK+d7P2U7UDXN7z4K89fWX8w0K8O1kbXHtyvLbSHr1sy7p3X+8rgvnOwr5186zsH+9rJ3k/ZDnR9w4u/8vyV9QcD/epgbXTtwf3aQnv4uiXj3nm9rwzuOwf72sm3vnOwr53s/ZTtQNc3vPgrz19ZfzDQrw7WRtce3K8ttIevWzLundf7yuC+c7CvnXzrOwf72sneT9kOdH3Di7/y/JX1BwP96mBtdO3B/dpCe/i6JePeeb2vDO47B/vaybe+c7Cvnez9lO1A1ze8+CvPX1l/MNCvDtZG1x7cry20h69bMu6d1/vK4L5zsK+dfOs7B/vayd5P2Q50fcOLv/L8lfUHA/3qYG107cH92kJ7+Lol4955va8M7jsH+9rJt75zsK+d7P2U7UDXN7z4K89fWX8w0K8O1kbXHtyvLbSHr1sy7p3X+8rgvnOwr5186zsH+9rJ3k/ZDnR9w4u/8vyV9QcD/epgbXTtwf3aQnv4uiXj3nm9rwzuOwf72sm3vnOwr53s/ZTtQNc3vPgrz19ZfzDQrw7WRtce3K8ttIevWzLundf7yuC+c7CvnXzrOwf72sneT9kOdH3Di7/y/JX1BwP96mBtdO3B/dpCe/i6JePeeb2vDO47B/vaybe+c7Cvnez9lO1A1ze8+CvPX1l/MNCvDtZG1x7cry20h69bMu6d1/vK4L5zsK+dfOs7B/vayd5P2Q50fcOLv/L8lfUHA/3qYG107cH92kJ7+Lol4955va8M7jsH+9rJt75zsK+d7P2U7UDXN7z4K89fWX8w0K8O1kbXHtyvLbSHr1sy7p3X+8rgvnOwr5186zsH+9rJ3k/ZDnR9w4u/8vyV9QcD/epgbXTtwf3aQnv4uiXj3nm9rwzuOwf72sm3vnOwr53s/ZTtQNc3vPgrz19ZfzDQrw7WRtce3K8ttIevWzLundf7yuC+c7CvnXzrOwf72sneT9kOdH3Di7/y/JX1BwP96mBtdO3B/dpCe/i6JePeeb2vDO47B/vaybe+c7Cvnez9lO1A1ze8+CvPX1l/MNCvDtZG1x7cry20h69bMu6d1/vK4L5zsK+dfOs7B/vayd5P2Q50fcOLv/L8lfUHA/3qYG107cH92kJ7+Lol4955va8M7jsH+9rJt75zsK+d7P2U7UDXN7z4G39//wBGtRXUqNj0GwAAAABJRU5ErkJggg=="/>
pdf display:
html display:
those images can display in html. but not display in pdf. how resolve ? thank you!
I use base64 image in html content ,not url; like this;
<img src="data: image/png; base64,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"/>
pdf display:
html display:
those images can display in html. but not display in pdf. how resolve ? thank you!
I'm facing the same issue. Base64 image i need to display in pdf converted document can this be done?
I had same issue as @rohanshenoy96 and @wangweinjcn - I had to remove spaces from
src="data: image/png; base64,iVBOR…
to make src="data:image/png;base64,iVBOR…
. First is interpreted only by browsers, second - by both browsers and library.
My image was in local folder and not hosted. I did it by converting the image to Binary64 and then passing it hardcoded to the src. It works if you have static image
See my solution here: https://stackoverflow.com/a/46658645/495455
@todsmer you got base64 working with this lib?
I am using img same as you:
<img style="height:100%; width:100%" src="data:image/png;base64,iVBOR....
and still blank space instead of image... with .jpg same - extension doesn't matter. I tried removing white characters like you but without success.
In ObjectSettings > WebSettings I've set LoadImages to true but nothing has changed.
Edit: removing style from img made png working. Instead I used width, height attributes of img:
<img widht="100%" height="100%" src="data:image/png;base64,iVBORw0K...
Eveything works!
Although probably would be better and worked at the beggining if it was wkhtmltopdf 0.12.6 and not 0.12.4... unfortunately dinktopdf is abandoned...