pdf - JsReport .NET Core - 从 url 生成 PDF

标签 pdf asp.net-core jsreport

尝试使用 JsReport 从 url 生成 pdf,但在他们的 github 存储库中找不到任何文档或示例。

基本上,我需要生成 pdf 并将其附加到电子邮件中,并且我设法将数据作为字节 [] 取回,但我似乎无法弄清楚如何使用现有的 View /操作。

这是生成 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);
    }

此操作应从“详细信息”获取 pdf View 并生成我可以附加的 PDF。下面我可以用静态内容生成它,比如“Hello from pdf”,但我不知道如何在 ASPNET Core 中使用我的“详细信息” View 。
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" };
    }

最佳答案

取自 JsReport Github Dotnet Example ,

[MiddlewareFilter(typeof(JsReportPipeline))]
public IActionResult InvoiceDownload()
{
    HttpContext.JsReportFeature().Recipe(Recipe.ChromePdf)
        .OnAfterRender((r) => HttpContext.Response.Headers["Content-Disposition"] = "attachment; filename=\"myReport.pdf\"");

    return View("Invoice", InvoiceModel.Example());
}

如果要从 Asp.net Core Controller Action 方法返回文件,请尝试以下操作
[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);
}

关于pdf - JsReport .NET Core - 从 url 生成 PDF,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49241855/

相关文章:

java - PdfBox - 使用获取字体信息

c# - 在 ASP.NET Core 中实现 GraphQL(GraphQL for .Net),为什么我的查询是 :ObjectGraphType class not being registered by dependency injection?

azure - ASP.NET Core 中 Azure 上的 Phantom pdf

c# - 如何设置 JsReport .NET 以使用当前应用程序文件夹

javascript - 单击按钮将 HTML div 内容导出为 pdf

java - 无法使用 FileInputStream 复制 PDF 文件

c# - 基于坐标c#突出显示pdf中的元素

javascript - 在另一个 ViewComponent 中调用一个 ViewComponent

javascript - 使用服务器端渲染设置 webpack 以在 asp.net 核心项目中加载 Sass 文件

loopbackjs - 在 jsreport 模板中访问 Restful API 数据