第一步首先安装 Dinktopdf
第二步
在startup.cs里面添加依赖
//添加命名空间
using DinkToPdf;
using DinkToPdf.Contracts;
//在ConfigureServices添加依赖
public void ConfigureServices(IServiceCollection services)
{
services.AddSingleton(typeof(IConverter), new SynchronizedConverter(new PdfTools()));
}
第三步在控制器里面添加代码如下:
using DinkToPdf;
using DinkToPdf.Contracts;
/// <summary>
/// 将网页转成PDF
/// </summary>
/// <param name="url">要转pdf的html路径</param>
/// <returns></returns>
[HttpPost]
public IActionResult HtmlToPdf(string url)
{
try
{
var doc = new HtmlToPdfDocument()
{
GlobalSettings = {
PaperSize = PaperKind.A5,
Orientation = Orientation.Portrait,
},
Objects = {
new ObjectSettings()
{
Page = url,
}
}
};
byte[] pdf = _converter.Convert(doc);
return File(pdf, "application/pdf", "文件名称.pdf");
//return new FileContentResult(pdf, "application/pdf");
}
catch (Exception ex)
{
return Ok(new AjaxResult
{
code = AjaxResultEnum.Error,
msg = "网络异常,请稍后重试!",
data= ex.Message.ToString()
}); ;
}
}
注意:要记得把libwkhtmltox库放到项目的根目录里,并在visual studio里设置“如果较新则复制“
dll是window, so是linux, dylib应该是mac os
注: linux或docker容器需要安装 libgdiplus 否则会提示找不到libwkhtmltox
先关安装博客推荐
https://blog.csdn.net/xiaoxionglove/article/details/109500985
https://blog.csdn.net/bellwethercoo/article/details/84497077
https://www.cnblogs.com/jinanxiaolaohu/p/11997098.html