首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >来自base64的C# Asp.net RazorPdf / iTextSharp映像

来自base64的C# Asp.net RazorPdf / iTextSharp映像
EN

Stack Overflow用户
提问于 2015-03-05 17:32:54
回答 2查看 1.6K关注 0票数 1

我在我的Asp.net MVC5项目中使用MvcRazorToPdf从模型创建pdfs。这很好用,但是我想包含一个来自base64字符串的图像,因为我不想保存生成的图像。

代码语言:javascript
复制
System.Drawing.Image img = generator.GenerateImage();
string imageBase64Data = Convert.ToBase64String(Helper.ImageToByteArray(img));
string imageDataURL = string.Format("data:image/png;base64,{0}", imageBase64Data);
ViewBag.Image = imageDataURL;

return new PdfActionResult(myobject);

..。

代码语言:javascript
复制
<img src="@ViewBag.Image" />

如果在普通视图中显示图像,但pdf不显示图像,则工作正常。

感谢您的帮助或替代方案。

EN

回答 2

Stack Overflow用户

发布于 2015-06-09 02:19:30

也许我回答得太晚了。如果您需要基于base64字符串的图像以避免将图像存储在文件系统中,则可以编写一个返回图像文件并在img标记中引用该url的操作:

代码语言:javascript
复制
public ActionResult GetImage(/*probably some id*/)
{ 
    System.Drawing.Image img = generator.GenerateImage();
    ImageConverter converter = new ImageConverter();
    var bytes = (byte[])converter.ConvertTo(img, typeof(byte[]));
    return File(bytes, "image/jpg"); // if your image is jpg
}

然后你的剃须刀看起来会像这样:

代码语言:javascript
复制
<img src='@Url.Action("GetImage", "Images", null, Request.Url.Scheme)' />

注使用Request.Url.Scheme Url.Action重载非常重要,因为iTextSharp需要完全限定的URL。

票数 1
EN

Stack Overflow用户

发布于 2015-03-09 22:46:24

在MvcRazorToPdf中,您只能使用图像文件的完整(本地)路径,如下所示:

代码语言:javascript
复制
@model MvcRazorToPdfExample.Models.PdfExample
@{
    ViewBag.Title = "Index";
    Layout = "~/Views/Shared/_PdfLayout.cshtml";
    var imagePath = Server.MapPath("~/Content/Images");
}

 <img src="@imagePath\avatar.jpg" alt="mug shot" />

据我所知,目前还不支持Base64镜像。我将上面的代码片段从example视图复制到:https://github.com/andyhutch77/MvcRazorToPdf/blob/master/MvcRazorToPdfExample/Views/Pdf/Index.cshtml

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/28874363

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档