欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

.net core 使用Rotativa创建PDF文档

程序员文章站 2023-10-27 09:14:04
一、下载Rotaiva 工具 = > NuGet包管理器 = > 管理解决方案的NuGet程序包 在打开的页面中搜索 Rotativa.AspNetCore 如下图: 选中红框的记录,左边会出现你解决方案中的所有项目,选中要添加的项目点击安装,安装完成后项目后面会出现版本号,如下图: 二、配置Rot ......

一、下载rotaiva

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

    在打开的页面中搜索 rotativa.aspnetcore 如下图:

    .net core 使用Rotativa创建PDF文档

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

    .net core 使用Rotativa创建PDF文档

二、配置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

    如下图:

    .net core 使用Rotativa创建PDF文档

三、开始建立静态pdf档

     在homecontroller 下建立一个action,如下图:

    .net core 使用Rotativa创建PDF文档

[httpget]
public iactionresult pdf()
{
    return new viewaspdf("pdf");
}

    然后建立cshtml

    .net core 使用Rotativa创建PDF文档

@{
    viewdata["title"] = "pdf";
}

<h2>pdf</h2>

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

   .net core 使用Rotativa创建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如下:

    .net core 使用Rotativa创建PDF文档