JsReport.NETCore-从url生成PDF
试图使用JsReport从url生成pdf,但在他们的github repo中找不到任何文档或示例 基本上,我需要生成pdf并将其附加到电子邮件中,我已经设法以字节[]的形式获取数据,但我似乎不知道如何使用现有的视图/操作 这是生成PDF以供查看的操作JsReport.NETCore-从url生成PDF,pdf,asp.net-core,jsreport,Pdf,Asp.net Core,Jsreport,试图使用JsReport从url生成pdf,但在他们的github repo中找不到任何文档或示例 基本上,我需要生成pdf并将其附加到电子邮件中,我已经设法以字节[]的形式获取数据,但我似乎不知道如何使用现有的视图/操作 这是生成PDF以供查看的操作 [MiddlewareFilter(typeof(JsReportPipeline))] public async Task<IActionResult> Pdf(Guid id) { var serv
[MiddlewareFilter(typeof(JsReportPipeline))]
public async Task<IActionResult> Pdf(Guid id)
{
var serviceOrder = await _serviceOrderService.Get(id);
if (serviceOrder == null) return new NotFoundResult();
var model = _mapper.Map<ServiceOrderModel>(serviceOrder);
HttpContext.JsReportFeature().Recipe(Recipe.PhantomPdf);
return View(model);
}
[MiddlewareFilter(typeof(JsReportPipeline))]
公共异步任务Pdf(Guid id)
{
var serviceOrder=await\u serviceOrderService.Get(id);
if(serviceOrder==null)返回newnotfoundresult();
var模型=_mapper.Map(serviceOrder);
HttpContext.JsReportFeature().Recipe(Recipe.PhantomPdf);
返回视图(模型);
}
此操作应采用“详细信息”中的pdf视图,并生成我可以附加的pdf。下面我可以用静态内容生成它,比如“Hello from pdf”,但我不知道如何在ASPNET Core中使用我的“Details”视图
public async Task<IActionResult> Email(Guid id)
{
var rs = new LocalReporting().UseBinary(JsReportBinary.GetBinary()).AsUtility().Create();
var report = await rs.RenderAsync(new RenderRequest()
{
Template = new Template()
{
Recipe = Recipe.PhantomPdf,
Engine = Engine.None,
Content = "Hello from pdf",
}
});
var memoryStream = new MemoryStream();
await report.Content.CopyToAsync(memoryStream);
memoryStream.Seek(0, SeekOrigin.Begin);
return new FileStreamResult(memoryStream, "application/pdf") { FileDownloadName = "out.pdf" };
}
公共异步任务电子邮件(Guid id)
{
var rs=new LocalReporting().useBarial(JsReportBinary.GetBinary()).AsUtility().Create();
var report=wait rs.RenderAsync(new RenderRequest())
{
模板=新模板()
{
Recipe=Recipe.PhantomPdf,
发动机=发动机。无,
Content=“Hello from pdf”,
}
});
var memoryStream=新的memoryStream();
等待report.Content.CopyToAsync(memoryStream);
memoryStream.Seek(0,SeekOrigin.Begin);
返回新的FileStreamResult(memoryStream,“application/pdf”){FileDownloadName=“out.pdf”};
}
取自
如果要从Asp.net Core Controller操作方法返回文件,请尝试以下操作
[MiddlewareFilter(typeof(JsReportPipeline))]
public async Task<IActionResult> Pdf(Guid id)
{
var serviceOrder = await _serviceOrderService.Get(id);
if (serviceOrder == null) return new NotFoundResult();
var model = _mapper.Map<ServiceOrderModel>(serviceOrder);
HttpContext.JsReportFeature().Recipe(Recipe.PhantomPdf).OnAfterRender((r) =>
HttpContext.Response.Headers["Content-Disposition"] = "attachment; filename=\"out.pdf\"");
return View(model);
}
[MiddlewareFilter(typeof(JsReportPipeline))]
公共异步任务Pdf(Guid id)
{
var serviceOrder=await\u serviceOrderService.Get(id);
if(serviceOrder==null)返回newnotfoundresult();
var模型=_mapper.Map(serviceOrder);
HttpContext.JsReportFeature().Recipe(Recipe.PhantomPdf).OnAfterRender((r)=>
HttpContext.Response.Headers[“内容处置”]=“附件;文件名=\”out.pdf\”;
返回视图(模型);
}
你得到解决方案devfunkd了吗?@IdrisStack我在下面发布了一个答案,请检查它是否对你有帮助
[MiddlewareFilter(typeof(JsReportPipeline))]
public async Task<IActionResult> Pdf(Guid id)
{
var serviceOrder = await _serviceOrderService.Get(id);
if (serviceOrder == null) return new NotFoundResult();
var model = _mapper.Map<ServiceOrderModel>(serviceOrder);
HttpContext.JsReportFeature().Recipe(Recipe.PhantomPdf).OnAfterRender((r) =>
HttpContext.Response.Headers["Content-Disposition"] = "attachment; filename=\"out.pdf\"");
return View(model);
}