.net core dotnetcore-DinkTOPdf中的PDF实现

.net core dotnetcore-DinkTOPdf中的PDF实现,.net-core,pdf-generation,dinktopdf,.net Core,Pdf Generation,Dinktopdf,dinktopdf熔核的实施 金块链接: 任何人都可以分享在.netCore中实现pdf文件生成的步骤吗? 如何在以流形式发送文件以生成pdf之前生成模板 如何在Startup.cs中注入依赖项?实现步骤: 使用来自中国的金块 使用手柄从html生成模板(javascript库) 公共类PdfExportTemplateBuilder:BaseTemplate { 公共静态字符串构建模板(EmployeeDetails EmployeesDetails、字符串id、字符串名称) { v

dinktopdf熔核的实施 金块链接:

任何人都可以分享在.netCore中实现pdf文件生成的步骤吗? 如何在以流形式发送文件以生成pdf之前生成模板


如何在Startup.cs中注入依赖项?

实现步骤:

  • 使用来自中国的金块

  • 使用手柄从html生成模板(javascript库)

公共类PdfExportTemplateBuilder:BaseTemplate
{
公共静态字符串构建模板(EmployeeDetails EmployeesDetails、字符串id、字符串名称)
{
var html=File.ReadAllText(Path.Combine(GetCurrentFolder(),@“EMPLOYEE\Template.Pdf.EMPLOYEE.html”);//在当前程序集中创建文件夹
html=html.Replace(ID\u占位符,string.IsNullOrWhiteSpace(ID)?“--”:ID);
html=html.Replace(NAME\u占位符,string.IsNullOrWhiteSpace(NAME)?“--”:NAME);
html=html.Replace(REPORT\u DATE,DateTime.UtcNow.ToString());
html=html.Replace(REPORT\u YEAR,DateTime.UtcNow.YEAR.ToString());
var template=handlebar.Compile(html);
返回模板(EmployeesDetails);
}
}
公共类基模板
{
受保护常量字符串ID_占位符=“{ID}}”;
受保护的常量字符串名称\占位符=“{NAME}}”;
}
  • 传递html模板以转换为PDF
public async Task DownloadPdfAsync(用户loggedInUser,字符串名)
{
var html=PdfExportTemplateBuilder.BuildTemplate(employeeDetails,id,name);
var转换选项=新转换选项
{
边距=新边距设置(10,5,10,5),
};
var pdfStream=newmemoryStream(_htmlToPdfConverter.ConvertHtml(html,conversionOptions));
pdfStream.Position=0;
return pdfStream;//以流形式返回文件
//作为返回文件(结果,“application/pdf”、“EmployeeDetails.pdf”)从调用函数访问。
}
}
  • _htmlToPdfConverter实现
公共类HtmlToPdfConverter:IHtmlToPdfConverter
{
专用只读IConverter\u转换器;
private const string FontName=“Arimo,Arial,Helvetica,sans serif”;
私有常量字符串CenterFooterText=“第[Page]页,共[toPage]”;
私有常量字符串RightFooterTextFormat=“报告日期:{0}”;
私有常量int FontSize=6;
专用常量双间距=7;
公共HTMLOPDFCONVERTER(IConverter converter)=>\U converter=转换器;
公共字节[]转换html(字符串html,转换选项转换选项)
{
var doc=新的HtmlToPdfDocument()
{
全局设置={
ColorMode=ColorMode.Color,
方向=方向。纵向,
PaperSize=PaperKind.A4,
页边距=转换选项。页边距,
},
对象={
新的ObjectSettings(){
PageScont=true,
HtmlContent=html,
WebSettings={EnableIntelligentShring=false},
页脚设置={
FontSize=FontSize,
FontName=FontName,
Right=string.Format(RightFooterTextFormat,DateTime.UtcNow.ToString()),
中心=中心页脚文本,
间距=间距
}
}
}
};
返回_converter.Convert(单据);
}
}
  • 在Startup.cs中注入依赖项(对于.Net core)
services.AddSingleton();
services.AddSingleton(类型化(IConverter)),新
SynchronizedConverter(新PdfTools());