Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/asp.net-core/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
JsReport.NETCore-从url生成PDF_Pdf_Asp.net Core_Jsreport - Fatal编程技术网

JsReport.NETCore-从url生成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

试图使用JsReport从url生成pdf,但在他们的github repo中找不到任何文档或示例

基本上,我需要生成pdf并将其附加到电子邮件中,我已经设法以字节[]的形式获取数据,但我似乎不知道如何使用现有的视图/操作

这是生成PDF以供查看的操作

[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);
}