asp.net-core – 在ASP.NET Core中将html导出为pdf
我想将一段html导出为pdf文件,但我没有任何兼容的nuget包。
当我尝试安装任何人时:“X与netcoreapp1.0不兼容(.NETCoreApp,Version = v1.0)。” 有谁知道使用asp.net核心导出到pdf的任何方法? 非常感谢提前! 解决方法
从我原来的答案复制到
Export to pdf using ASP.NET 5:
从.NET Core中的html生成pdf(没有任何.NET框架依赖性)的一种方法是在.NET Core应用程序中使用Node.js。 安装NuGet包Microsoft.AspNetCore.NodeServices 在Startup.cs中添加像这样的service.AddNodeServices()行 public void ConfigureServices(IServiceCollection services) { // ... all your existing configuration is here ... // Enable Node Services services.AddNodeServices(); } 现在安装所需的Node.js包: 从命令行将工作目录更改为.NET Core项目的根目录并运行这些命令。 npm init 并按照说明创建package.json文件 npm install jsreport-core --save npm install jsreport-jsrender --save npm install jsreport-phantom-pdf --save 在包含的项目的根目录中创建文件pdf.js. module.exports = function (callback) { var jsreport = require('jsreport-core')(); jsreport.init().then(function () { return jsreport.render({ template: { content: '<h1>Hello {{:foo}}</h1>',engine: 'jsrender',recipe: 'phantom-pdf' },data: { foo: "world" } }).then(function (resp) { callback(/* error */ null,resp.content.toJSON().data); }); }).catch(function (e) { callback(/* error */ e,null); }) }; 看看here有关jsreport-core的更多解释。 现在在调用此Node.js脚本的Mvc控制器中创建一个操作 [HttpGet] public async Task<IActionResult> MyAction([FromServices] INodeServices nodeServices) { var result = await nodeServices.InvokeAsync<byte[]>("./pdf"); HttpContext.Response.ContentType = "application/pdf"; string filename = @"report.pdf"; HttpContext.Response.Headers.Add("x-filename",filename); HttpContext.Response.Headers.Add("Access-Control-Expose-Headers","x-filename"); HttpContext.Response.Body.Write(result,result.Length); return new ContentResult(); } 当然,您可以使用nodeServices返回的byte []执行任何操作,在此示例中,我只是从控制器操作中输出它,以便可以在浏览器中查看它。 您还可以使用pdf.js中的resp.content.toString(‘base64’)通过base64编码的字符串在Node.js和.NET Core之间交换数据并使用 备择方案 大多数pdf生成器解决方案仍然依赖于.NET 4.5 / 4.6框架。但是,如果您不喜欢使用Node.js,似乎有一些付费替代方案: > NReco.PdfGenerator.LT 我没有尝试过这些。 我希望我们很快会看到这一领域的一些开源进展。 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
- 为什么在使用当前同步上下文启动任务时,不设置ASP.NET Http
- asp.net – Jquery验证插件是否需要表单标记?
- 如何在ASP.NET中以编程方式创建子域?
- asp.net-mvc-4 – 什么是antlr3,为什么默认情况下在VS2012
- 初识ABP vNext(4):vue用户登录&菜单权限
- 如何使用asp.net webapi获取Json Post Values
- 为什么在ASP.NET MVC中暂停超时?
- asp.net-core-mvc – 在ExecuteResult Asp.Net MVC Core中访
- asp.net – 高效地加入Entity Framework Core中另一个表的最
- asp.net – C#如何在GridView上创建Hyperlink OnClick事件?
- asp.net – SharePoint文件大小限制
- asp.net-mvc – 使JSON.NET和Serializable属性一
- asp.net-mvc – 分页助手asp.net mvc
- asp.net-mvc – 如何刷新多个部分视图点击Ajax.A
- asp.net-mvc – 如何在SAAS解决方案(Windows Azu
- asp.net-mvc – 适用于典型n层架构的Web API在哪
- asp.net-web-api – 将JSON数组从Javascript传递
- asp.net-mvc – 具有指定Controller和Action的Ht
- 在asp.net中查看状态
- asp.net – 在集成模式下替换HttpContext.Curren