zoukankan      html  css  js  c++  java
  • .net core 使用Rotativa创建PDF文档

    一、下载Rotaiva

        工具  = >  NuGet包管理器  = >  管理解决方案的NuGet程序包

        在打开的页面中搜索 Rotativa.AspNetCore 如下图:

       

        选中红框的记录,左边会出现你解决方案中的所有项目,选中要添加的项目点击安装,安装完成后项目后面会出现版本号,如下图:

       

    二、配置Rotaiva

        在Startup.cs的Rotaiva方法中添加以下内容:  

    RotativaConfiguration.Setup(env);

        完整代码如下:  

    public void Configure(IApplicationBuilder app, IHostingEnvironment env)
    {
        if (env.IsDevelopment())
        {
            app.UseDeveloperExceptionPage();
        }
        else
        {
            app.UseExceptionHandler("/Home/Error");
        }
        RotativaConfiguration.Setup(env);//RotativaConfiguration 转PDF 功能
        app.UseStaticFiles();
        app.UseCookiePolicy();
    
        app.UseMvc(routes =>
        {
            routes.MapRoute(
                name: "default",
                template: "{controller=Home}/{action=Index}/{id?}");
            });
        }
    }

        添加PDF转换工具

        在wwwroot目录下添加Rotativa目录 ,再把wkhtmltoimage.exe和wkhtmltopdf.exe复制进去,

        此两个文件在此网站下载:https://github.com/webgio/Rotativa.AspNetCore

        如下图:

       

    三、开始建立静态PDF档

         在HomeController 下建立一个Action,如下图:

       

    [HttpGet]
    public IActionResult Pdf()
    {
        return new ViewAsPdf("Pdf");
    }

        然后建立cshtml

       

    @{
        ViewData["Title"] = "Pdf";
    }
    
    <h2>Pdf</h2>

        启动项目,打印页面,可以看到下载pdf页面,最终PDF如下:

       

    四、建立动态PDF档

        建立Controller  

    [HttpGet]
    public IActionResult PdfDemo()
    {
        List<tbl_page> pageList = new List<tbl_page>();
        pageList.Add(new tbl_page() 
    { page_name
    ="1", page_no="1" }); pageList.Add(new tbl_page() { page_name = "2", page_no = "2" }); pageList.Add(new tbl_page() { page_name = "3", page_no = "3" }); return new ViewAsPdf(pageList); }

        生成cshtml  

    @model IEnumerable<NetCoreApiDemo.Model.tbl_page>
    @{
        ViewData["Title"] = "PdfDemo";
    }
    
    <h2>PdfDemo</h2>
    <table class="table table-bordered">
        <thead>
            <tr>
                <th>page_no</th>
                <th>page_name</th>
            </tr>
        </thead>
        <tbody>
            @foreach (var item in Model)
            {
                <tr>
                    <td>@item.page_no</td>
                    <td>@item.page_name</td>
                </tr>
            }
        </tbody>
    </table>

        最终生成PDF如下:

       

  • 相关阅读:
    Vue.js监听事件
    Vue.js组件传值
    Vue.js安装
    C#中输入法全角转换半角
    文件夹操作
    转JSON字符串,并进行AES加密
    ReportView报表的使用
    c++读入优化
    快读板子
    【转】2020年 大二上 ACM
  • 原文地址:https://www.cnblogs.com/zbspace/p/11617725.html
Copyright © 2011-2022 走看看