当前位置: 首页 > ai >正文

Magicodes.IE.Pdf 生成导出PDF文件 bytes Stream FileStreamResult 下载

1、ExporterAttribute:导出特性
Name:名称
HeaderFontSize:头部字体大小
FontSize:正文字体大小
MaxRowNumberOnASheet:一个Sheet最大允许的行数,设置了之后将输出多个Sheet
AutoFitAllColumn:自适应所有列
AutoFitMaxRows:数据超过此行之后不启用自适应,默认关闭
Author:作者
IsDisableAllFilter:是否禁用所有筛选器

2、ExporterHeaderAttribute:导出属性特性,设置列头特性信息   
DisplayName:显示名称
FontSize:字体大小
IsBold:是否加粗
FORMAT:格式化(身份证'@',日期'yyyy-MM-dd'、'yyyy-MM-dd HH:mm:ss',数字'#,##0')
IsAutoFit:是否自适应
AutoCenterColumn:自动居中
IsIgnore:是否忽略
Width:宽度
ColumnIndex:排序
WrapText:自动换行
Hidden:隐藏
FontColor:字体颜色

3、导出PDF方法
ExportListByTemplate
ExportByTemplate
ExportBytesByTemplate

4、在wwwroot新建文件夹目录
pdf文件导出目录:\wwwroot\ExportPDF
Html模板目录:\wwwroot\HtmlTemplate

5、管理 NuGet 程序包

Magicodes.IE.Pdf

6、Html模板文件【\wwwroot\HtmlTemplate\receipt.html】

<!DOCTYPE html><html lang="en" xmlns="http://www.w3.org/1999/xhtml"><head><meta charset="utf-8" /><title></title><style type="text/css">body {font-family: SimSun !important;}p {margin: 0px;}footer {color: #333;font-size: 1.2rem;margin-bottom: 1.5rem;margin-right: 5%;margin-top: 1.2rem;text-align: right;}table,td {border: 1px solid #444;border-collapse: collapse;/* text-align: center; */height: 2rem;padding: 5px;}</style>
</head><body><p style="color: #000; font-size: 1.8rem; height: 32px; text-align: center;">@Model.Title</p><p style="color: #333; font-size: 1.2rem; margin-left: 5%; margin-top: 1%;"><text>NO:@Model.Data.Code</text><text style="padding-left: 52%; text-align: right;">交易时间:@Model.Data.TradeTime.ToString("yyyy-MM-dd HH:mm:ss")</text></p><table width="90%" style="margin-left: 5%; margin-top: 1%;"><tr style="font-size: 1rem;"><td style="text-align: center; width: 11%;">交款姓名</td><td colspan="2">@Model.Data.Name</td><td style="text-align: center; width: 13%;">身份证号码</td><td colspan="3">@Model.Data.IdNo</td></tr><tr style="font-size: 1rem;"><td style="text-align: center">交易金额</td><td colspan="6"><span>¥:@Model.Data.Amount</span><span style="padding: 0 2% 0 2%;">人民币(大写):</span><span>@Model.Data.UppercaseAmount</span></td></tr><tr style="font-size: 1rem;"><td style="text-align: center">收款方式</td><td colspan="2">@Model.Data.PaymentMethod</td><td style="text-align: center; width: 13%;">交易状态</td><td colspan="3">@Model.Data.TradeStatus</td></tr><tr style="font-size: 1rem;"><td style="text-align: center">收款事由</td><td style="width: 22.3%;">@Model.Data.Remark</td><td style="text-align: center; width: 11%;">入学年级</td><td style="width: 22.3%;" colspan="2">@Model.Data.Grade</td><td style="text-align: center; width: 11%;">专业</td><td style="width: 22.3%;">@Model.Data.Profession</td></tr></table>
</body>
</html>

7、Controller

using Magicodes.ExporterAndImporter.Core.Models;
using Magicodes.ExporterAndImporter.Excel;
using Magicodes.ExporterAndImporter.Pdf;
using Microsoft.AspNetCore.Mvc;
using WebApplication2.Model;namespace WebApplication2.Controllers
{[Route("api/Magicodes/[action]")][ApiController]public class MagicodesController : ControllerBase{public MagicodesController() { }/// <summary>/// 1.根据模板导出列表/// </summary>/// <returns></returns>[HttpGet]public async Task ExportListByTemplate(){//根目录var root = $"{Directory.GetCurrentDirectory()}\\wwwroot";//导出文件路径及名称string fileName = $"{root}\\ExportPDF\\{DateTime.Now.ToString("yyyyMMddHHmmss")}.pdf";var list = new List<StudentPdf>();for (int i = 0; i <= 10; i++){list.Add(new StudentPdf{Name = $"MR.{i}",Age = i,Birthday = DateTime.Now.AddDays(i)});}var exporter = new PdfExporter();var result = await exporter.ExportListByTemplate(fileName, list);}/// <summary>/// 2.根据模板导出/// </summary>/// <returns></returns>[HttpGet]public async Task ExportByTemplate(){//根目录var root = $"{Directory.GetCurrentDirectory()}\\wwwroot";//pdf模板文件var templatePath = Path.Combine(root, "HtmlTemplate", "receipt.html");var template = System.IO.File.ReadAllText(templatePath);var exporter = new PdfExporter();//导出文件路径及名称string fileName = $"{root}\\ExportPDF\\{DateTime.Now.ToString("yyyyMMddHHmmss")}.pdf";//此处使用默认模板导出ExportFileInfo result = await exporter.ExportByTemplate(fileName, GetModel(), template);}/// <summary>/// 3.导出PDF Bytes 文件/// </summary>/// <returns></returns>[HttpGet]public async Task<ActionResult> ExportBytesByTemplate(){//根目录var root = $"{Directory.GetCurrentDirectory()}\\wwwroot";//pdf模板文件var templatePath = Path.Combine(root, "HtmlTemplate", "receipt.html");var template = System.IO.File.ReadAllText(templatePath);var exporter = new PdfExporter();//文件名称string fileName = $"{DateTime.Now.ToString("yyyyMMddHHmmss")}.pdf";var bytes = await exporter.ExportBytesByTemplate(GetModel(), template);MemoryStream stream = new MemoryStream(bytes);return new FileStreamResult(stream, "application/octet-stream"){FileDownloadName = fileName};}/// <summary>/// 数据/// </summary>/// <returns></returns>private ReceiptInfoPdf GetModel(){var model = new ReceiptInfoPdf{Amount = 159873.66M,Grade = "2025",IdNo = "12345620000102xxxx",Name = "张三",Payee = "科技有限公司",PaymentMethod = "支付宝支付",Profession = "篮球",Remark = "学费",TradeStatus = "已完成",TradeTime = DateTime.Now,UppercaseAmount = "壹拾伍万玖仟捌佰柒拾叁元陆角陆分",Code = "219071800001"};return model;}}
}

8、ReceiptInfoPdf 实体类

using Magicodes.ExporterAndImporter.Core;namespace WebApplication2.Model
{[Exporter(Name = "电子收款凭证")]public class ReceiptInfoPdf{/// <summary>/// 交易时间/// </summary>public DateTime TradeTime { get; set; }/// <summary>/// 姓名/// </summary>public string Name { get; set; }/// <summary>/// 身份证/// </summary>public string IdNo { get; set; }/// <summary>/// 金额/// </summary>public decimal Amount { get; set; }/// <summary>/// 支付方式/// </summary>public string PaymentMethod { get; set; }/// <summary>/// 交易状态/// </summary>public string TradeStatus { get; set; }/// <summary>/// 备注/// </summary>public string Remark { get; set; }/// <summary>/// 年级/// </summary>public string Grade { get; set; }/// <summary>/// 专业/// </summary>public string Profession { get; set; }/// <summary>/// 收款人/// </summary>public string Payee { get; set; }/// <summary>/// 大写金额/// </summary>public string UppercaseAmount { get; set; }/// <summary>///     编号/// </summary>public string Code { get; set; }}
}

9、StudentPdf 实体类

using Magicodes.ExporterAndImporter.Core;
using Magicodes.ExporterAndImporter.Pdf;
using System.ComponentModel.DataAnnotations;namespace WebApplication2.Model
{[PdfExporter(Name = "学生信息", HeaderFontSize = 20, FontSize = 20)]public class StudentPdf{/// <summary>/// 姓名/// </summary>[ExporterHeader(DisplayName = "姓名", FontSize = 10, IsBold = true, IsAutoFit = true)][Display(Name = "Display姓名")]public string Name { get; set; }/// <summary>/// 年龄/// </summary>[ExporterHeader(DisplayName = "年龄")]public int Age { get; set; }/// <summary>/// 出生日期/// </summary>[ExporterHeader(DisplayName = "出生日期", Format = "yyyy-MM-dd")]public DateTime Birthday { get; set; }}
}

10、效果图

11、项目
E:\test\WebApplication2\WebApplication2\Controllers\MagicodesController.cs
*
*
*

http://www.xdnf.cn/news/18828.html

相关文章:

  • MYSQL---存储过程
  • 能源行业数据库远程运维安全合规实践:Web化平台的落地经验
  • AI 暗战: 回声室攻击 —— 解锁大模型安全防御的隐秘战场
  • [Sync_ai_vid] 唇形同步评判器 | 图像与视频处理器 | GPU测试
  • 【RabbitWQ】基于 Java 实现轻量级消息队列(二)
  • 使用 ROS2 构建客户端-服务器通信:一个简单的计算器示例
  • 储能变流器学习之MPPT
  • 汽车盲点检测系统的网络安全分析和设计
  • k8s-容器化部署论坛和商城服务
  • 开源 | 推荐一套企业级开源AI人工智能训练推理平台(数算岛):完整代码包含多租户、分布式训练、模型市场、多框架支持、边缘端适配、云边协同协议:
  • PMP项目管理知识点-⑮预测型项目概念辨析
  • Web 自动化测试常用函数实战(一)
  • Unity自定义Inspector面板之使用多选框模拟单选框
  • 测试分类(超详解)
  • vue拖动排序,vue使用 HTML5 的draggable拖放 API实现内容拖并排序,并更新数组数据
  • 基于SpringBoot的社区儿童疫苗接种预约系统设计与实现(代码+数据库+LW)
  • 【高级机器学习】3. Convex Optimisation
  • 无限长直导线周围电场分布的MATLAB
  • 【MATLAB例程】二维平面上的多目标TOA定位,目标和TOA基站的数量、位置可自行设置。附代码下载链接
  • 浅谈Elasticsearch数据写入流程的refresh和flush操作
  • ICDE 2025 | 包含OPTIONAL和UNION表达式的SPARQL查询的高效执行方法
  • 硬件开发_基于物联网的儿童座椅系统
  • 3.【鸿蒙应用开发实战: 从入门到精通】开发入门 Hello World
  • 7、prefix-tuning、P-tuning、Prompt-tuning
  • 基于数据安全的旅游民宿租赁系统
  • 音频时长裁剪工具:高效处理音频,让内容创作更轻松
  • docker 所有常用命令,配上思维导图,加图表显示
  • 配送算法16 A Deep Reinforcement Learning Approach for the Meal Delivery Problem
  • 【Linux】用户与用户组管理
  • 【C语言强化训练16天】--从基础到进阶的蜕变之旅:Day14