- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有一张使用 .Net Core 3 Web API
和 DinkToPdf
库创建的 pdf 发票。
现在我需要在 pdf 中插入图像作为签名。我创建了项目的 Resource 文件夹,并添加了 Copy to Output Directory
设置为 allways
的图像。但我不知道如何在包含所有 pdf 数据的字符串值中使用它。
var htmlDoc = new StringBuilder();
...
htmlDoc.AppendLine("<td>");
// here I need to insert the image
Stream imgStream = Assembly.GetExecutingAssembly()
.GetManifestResourceStream("Project.Resources.signature.jpeg"); // is allways null
or
htmlDoc.AppendLine("<img src=\"Project.Resources.signature.jpeg\" />");
htmlDoc.AppendLine("</td>");
var doc = new HtmlToPdfDocument()
{
GlobalSettings = {
ColorMode = ColorMode.Color,
Orientation = Orientation.Landscape,
PaperSize = PaperKind.A4Plus,
Margins = new MarginSettings() { Top = 10, Left = 30, Right = 30 }
},
Objects = {
new ObjectSettings() {
PagesCount = true,
HtmlContent = htmlDoc.ToString(),
WebSettings = { DefaultEncoding = "utf-8" }
}
}
};
var pdf = converter.Convert(doc);
var stream = new MemoryStream(pdf);
var contentType = @"application/pdf";
var fileName = $"Invoice_{entity.Id}.pdf";
stream.Seek(0, SeekOrigin.Begin);
return File(stream, contentType, fileName);
启动.cs:
services.AddSingleton(typeof(IConverter), new SynchronizedConverter(new PdfTools()));
编辑:我发现绝对路径有效
htmlDoc.AppendLine("<img src=\"C/User/Application/Project/Resources/signature.jpeg\" />");
但是,这不是最优方案,因为本地环境的绝对路径与生产环境不同。
还有其他想法吗?谢谢
最佳答案
Asp.net Core的工作目录与web目录不同。您需要在项目根目录中添加文件夹wwwroot。它是网络的根目录。
在controller中,通过IWebHostEnvironment获取项目根目录。这是示例。
[ApiController]
[Route("dink/")]
public class DinkController:ControllerBase
{
IConverter converter;
public IConfiguration Configuration;
IWebHostEnvironment webHostEnvironment;
public DinkController(IConverter _converter,IConfiguration configuration,IWebHostEnvironment environment)
{
converter = _converter;
Configuration = configuration;
webHostEnvironment = environment;
}
//[Route("get")]
public IActionResult get()
{
var htmlDoc = new StringBuilder();
htmlDoc.AppendLine("<td>");
var path = webHostEnvironment.WebRootPath+"\\1.png";//It fetches files under wwwroot
htmlDoc.AppendLine($"<img src=\"{path}\" />");
htmlDoc.AppendLine("</td>");
var doc = new HtmlToPdfDocument()
{
GlobalSettings = {
ColorMode = ColorMode.Color,
Orientation = Orientation.Landscape,
PaperSize = PaperKind.A4Plus,
Margins = new MarginSettings() { Top = 10, Left = 30, Right = 30 }
},
Objects = {
new ObjectSettings() {
PagesCount = true,
HtmlContent = htmlDoc.ToString(),
WebSettings = { DefaultEncoding = "utf-8" }
}
}
};
var pdf = converter.Convert(doc);
var stream = new MemoryStream(pdf);
var contentType = @"application/pdf";
var fileName = $"Invoice_Id.pdf";
stream.Seek(0, SeekOrigin.Begin);
return File(stream, contentType, fileName);
}
}
关于c# - DinkToPdf 在 HtmlContent 中包含图像,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64559949/
我有一张使用 .Net Core 3 Web API 和 DinkToPdf 库创建的 pdf 发票。 现在我需要在 pdf 中插入图像作为签名。我创建了项目的 Resource 文件夹,并添加了 C
我在 play 2.6 中有一个通用模板,我想传入可变数量的 HtmlContent。我已经像这样定义了 template(包括我拥有的隐式参数,以防发生任何更改): @(foo: String)(c
这是我使用的 JavaScript 代码的一部分: infobox.setLocation(e.target.getLocation()); infobox.setHtmlContent(myHtml
使用设置了 htmlContent 属性的图钉创建 map 时,当图钉离开 map 区域时(例如:放大然后缩小),事件可能会解除绑定(bind)。 重新创建的步骤: 加载 map 单击图钉(应提醒)放
希望有人能帮忙。 我正在使用 Bing map (v8 - 最新版本),但是当我创建自定义信息框并使用异步请求填充内容时,无论是 setTimeout/ajax - 即使鼠标光标处于(看似)在信息框窗
我是一名优秀的程序员,十分优秀!