C# .NET Core MVC导出PDF

工欲善其事必先利其器,一个好的方法能促使我们快速的完成一项工作。废话不多说,继续上干货,今天的编码是用.NET Core 导出一个PDF文件,我们这里借用的是【张三的简历】(张三:你们能不能别拿我举例了),将【张三的简历】导出,网页预览样式如下:

 可以看出今天的张三同学也是一个程序员,而且是知名的C#程序员,个人简历也是幽默和谐又不失文雅

-------------------------------------------------分割线-正文开始----------------------------------------------------------

1、创建预览页

 新建一个.NET Core MVC项目,如图所示:

在model文件夹新建Person类,代码如下;
 

using Magicodes.ExporterAndImporter.Core;
using System;

namespace WebMVC.Models
{
    [Exporter(Name = "个人简历")]
    public class Person
    {
        public int Id { get; set; }
        public string Name { get; set; }
        public string Gender { get; set; }
        public DateTime Birthday { get; set; }
        public string Mobile { get; set; }
        public string University { get; set; }
        public string Education { get; set; }
        public string Major { get; set; }
        public string Nation { get; set; }
        public string MarriageStaus { get; set; }
        public string Occupation { get; set; }
        public string FreshStudent { get; set; }
        public DateTime VisitDate { get; set; }
        public string CurrentCompanyName { get; set; }
        public string Resignation { get; set; }
        public string Profile { get; set; }
        public string Evaluate { get; set; }
        public string FurImg { get; set; }
        public string AnalysisReport { get; set; }
    }
}

 HomeController控制器下index方法添加如下代码,设置默认数据:

    public IActionResult Index()
        {

            Person resumeDescription = new Person();
            resumeDescription.Id = 1;
            resumeDescription.Name = "张三";
            resumeDescription.Gender = "男";
            resumeDescription.Birthday = Convert.ToDateTime("1995-05-22");
            resumeDescription.Mobile = "18888888888";
            resumeDescription.University = "华中科技大学";
            resumeDescription.Education = "硕士研究生";
            resumeDescription.Major = "计算机科学技术";
            resumeDescription.Nation = "汉族";
            resumeDescription.MarriageStaus = "已婚";
            resumeDescription.Occupation = "砖厂搬砖";
            resumeDescription.FreshStudent = "否";
            resumeDescription.VisitDate = Convert.ToDateTime("2017-07-01");
            resumeDescription.CurrentCompanyName = "王多鱼谁有梦想投资有限公司";
            resumeDescription.Resignation = "梦想都实现了,现想找一份端茶调水双休五险一金不是996的软件公司";
            resumeDescription.Profile = "本人精通Word、Excel、Access、Power Point、Outlook Express等软件的安装与卸载     熟练掌握VB、C++、FoxPro、SQL、java 等单词的拼写熟悉 Win7、WindowsPhone、Linux、Mac、Android、IOS、Blackberry等操作系统的开关机!";
            resumeDescription.Evaluate = "C#是世界上最好的语言";
            resumeDescription.FurImg = $"\\Images\\001.jpg";
            resumeDescription.AnalysisReport = $"\\Images\\002.jpg";
            return View(resumeDescription);
        }

View视图Home/Index.cshtml编写如下代码:
 


@{
    Layout = null;
}
@model WebMVC.Models.ResumeDescription
<!DOCTYPE html>
<html>
<head>
    <meta charset='UTF-8'>
    <title></title>
    <style>
        body {
            margin: 0;
            padding: 0;
            min-width: 1080px;
        }

        .m_table {
            border-collapse: separate;
            margin: 20px auto 0;
            min-width: 1900px;
            text-align: center;
            font: 500 17px '微软雅黑';
            border-spacing: 0;
            border: 1px solid #EBEEF5;
        }

            .m_table th {
                background-color: #F7F3F7;
            }

            .m_table th,
            .m_table td {
                border-right: 1px solid #EBEEF5;
                border-bottom: 1px solid #EBEEF5;
                padding: 5px;
                height: 60px;
                width: 60px;
            }
    </style>
</head>
<body>

    <fieldset>
        <legend>简历信息</legend>
        <table class='m_table'>
            <tr>
                <th colspan='8' style='text-align:center;font-size:25px;'> @(Model.Name)的简历</th>
            </tr>
            <tr>
                <th colspan='8' style='text-align:left;font-size:18px;'>个人信息</th>
            </tr>
            <tr>
                <td> 姓名:</td>

                <td> @Model.Name </td>
                <td> 性别: </td>

                <td> @Model.Gender </td>
                <td> 出生: </td>

                <td> @(Model.Birthday.ToString("yyyy-MM-dd")) </td>
                <td> 电话: </td>
                <td> @Model.Mobile </td>

            </tr>
            <tr>
                <td> 毕业大学:</td>
                <td> @Model.University</td>
                <td> 学历: </td>
                <td> @Model.Education</td>

                <td> 专业: </td>
                <td>@Model.Major</td>
                <td> 民族: </td>
                <td>@Model.Nation </td>
            </tr>

            <tr>
                <td> 婚姻:</td>
                <td> @Model.MarriageStaus </td>
                <td> 入职前职业: </td>
                <td> @Model.Occupation</td>

                <td> 是否应届生: </td>
                <td>@Model.FreshStudent</td>
                <td> 毕业日期: </td>
                <td> @Model.VisitDate.ToString("yyyy-MM-dd") </td>
            </tr>
            <tr>
                <td>现公司名称:</td>
                <td colspan='7'>
                    @Model.CurrentCompanyName
                </td>
            </tr>

            <tr>
                <td>离职原因:</td>
                <td colspan='7'>  @Model.Resignation</td>
            </tr>
            <tr>
                <td>个人简介:</td>
                <td colspan='7'>  @Model.Profile </td>
            </tr>
            <tr>
                <td>个人评价:</td>
                <td colspan='7'>   @Model.Evaluate </td>
            </tr>

            <tr>
                <th colspan='8' style='text-align:left;font-size:18px;'>相关照片</th>
            </tr>

            <tr style='height: 300px;'>
                <td>证件照片:</td>
                <td colspan='3'>
                    <img src='@Model.FurImg' style='width:300px;height:250px'>
                </td>
                <td>生活照片:</td>
                <td colspan='3'>
                    <img src='@Model.AnalysisReport' style='width:300px;height:250px'>
                </td>
                
              
            </tr>
        </table>
    </fieldset>
    <fieldset>
        <legend>导出为PDF</legend>
        <a href="/Home/Export">导出</a>
    </fieldset>
</body>
</html>

1、导出PDF

 HomeController控制器下Export方法添加如下代码,进行文件下载:

   public async Task<FileResult> Export()
        {
            try
            {
                Person resumeDescription = new Person
                {
                    Id = 1,
                    Name = "张三",
                    Gender = "男",
                    Birthday = Convert.ToDateTime("1995-05-22"),
                    Mobile = "18888888888",
                    University = "华中科技大学",
                    Education = "硕士研究生",
                    Major = "计算机科学技术",
                    Nation = "汉族",
                    MarriageStaus = "已婚",
                    Occupation = "砖厂搬砖",
                    FreshStudent = "否",
                    VisitDate = Convert.ToDateTime("2017-07-01"),
                    CurrentCompanyName = "王多鱼谁有梦想投资有限公司",
                    Resignation = "梦想都实现了,现想找一份端茶调水双休五险一金不是996的软件公司",
                    Profile = "本人精通Word、Excel、Access、Power Point、Outlook Express等软件的安装与卸载     熟练掌握VB、C++、FoxPro、SQL、java 等单词的拼写熟悉 Win7、WindowsPhone、Linux、Mac、Android、IOS、Blackberry等操作系统的开关机!",
                    Evaluate = "C#是世界上最好的语言",
                    FurImg = $"{_webHostEnvironment.WebRootPath}\\Images\\001.jpg",
                    AnalysisReport =$"{_webHostEnvironment.WebRootPath}\\Images\\002.jpg"
                };

                var tplPath = Path.Combine(Directory.GetCurrentDirectory(), "Template", "PdfTemplate.cshtml");
                var tpl = System.IO.File.ReadAllText(tplPath);
                var exporter = new PdfExporter();
                string fileName = $"{Guid.NewGuid().ToString()}.pdf";
                string downloadName = $"{Path.Combine(Directory.GetCurrentDirectory())}\\{fileName}";
                var result = await exporter.ExportByTemplate(downloadName,
                 resumeDescription, tpl);
                //因为生成的模板默认在当前项目下,需要移动到wwwroot
                System.IO.File.Move(result.FileName, $"{_webHostEnvironment.WebRootPath}\\Download\\{fileName}");

                string addrUrl = $"{_webHostEnvironment.WebRootPath}\\Download\\{fileName}";
                var stream = System.IO.File.OpenRead(addrUrl);
                return File(stream, result.FileType, Path.GetFileName(addrUrl));
            }
            catch (Exception ex)
            {
                var stream = System.IO.File.OpenRead(null);
                return File(stream, "application/vnd.android.package-archive");
            }


        }

当点击预览页导出按钮时,自动导出一个PDF文件。

附件下载地址请点击:C#.NETCoreMVC导出PDF-C#文档类资源-CSDN文库

---------------------------------------------------

2021年10月14日,更新导出功能,增加导出Word文件,Html文件,Pdf文件,将模板后缀*.cshtml更改为*.html附件下载地址请点击:NETCore通过预设的html模板,导出Word文件,Html文件,Pdf文件-C#文档类资源-CSDN文库

  • 1
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值