ASP.NET Core 6.0 中最好的 Html 到 PDF 转换器

hik*_*iks 6 pdf-generation asp.net-core

我想在我的网站(ASP.NET Core 6.0)中将 html 转换为 pdf,但我找不到解决方案。
它应该通过指定 url 来创建。

在 ASP.NET MVC 5 时代,我使用过名为 Tuespeckin 的库。

有没有任何免费且优雅的解决方案可以在 ASP.NET Core 6.0 中工作?

尽管下面的文章很有帮助,但它可能有点过时了。
PDFSharp可以从Net Core中的Html字符串创建Pdf文件吗?

第一个答案提到 SelectPDF,但我希望有更现代的方法(如果有)。

Che*_*hen 1

您可以使用Syncfusion将 html 转换为 pdf。

首先,安装Syncfusion.HtmlToPdfConverter.Net.WindowsNuGet 包。

然后,在控制器中编辑相应的方法:

public class HomeController : Controller
{
    public IActionResult Index()
    {
        return View();
    }
    public IActionResult ExportToPDF()
    {
        HtmlToPdfConverter htmlConverter = new HtmlToPdfConverter();

        //Convert URL to PDF document
        PdfDocument document = htmlConverter.Convert("https://www.syncfusion.com");

        //Create memory stream
        MemoryStream stream = new MemoryStream();

        //Save the document
        document.Save(stream);

        return File(stream.ToArray(), System.Net.Mime.MediaTypeNames.Application.Pdf, "HTML-to-PDF.pdf");
    }
}
Run Code Online (Sandbox Code Playgroud)

不要忘记添加名称空间:

using Syncfusion.Pdf;
using Syncfusion.HtmlConverter;
Run Code Online (Sandbox Code Playgroud)

最后,添加调用Index.cshtml

@{
    Html.BeginForm("ExportToPDF", "Home", FormMethod.Post);
    {
        <div>
            <input type="submit" value="Convert HTML to PDF" style="width:250px;height:27px" />
        </div>
    }
    Html.EndForm();
}
Run Code Online (Sandbox Code Playgroud)

您可以在控制器方法中更改要下载的 URL 页面:

PdfDocument document = htmlConverter.Convert("Your Url");
Run Code Online (Sandbox Code Playgroud)

更多详细信息,您可以参考此文档

更新:

是的,它实际上并不是开源的,您需要获得许可证密钥才能删除它(只有 30 天的免费试用期)。

免费有效的首选其实是SelectPDF。

如果实在不想用,可以选择以下两种:

PuppeteerSharp:这是一个无头 chrome 实例,可以捕获 pdf,并且有一个很好的 C# 库 (Puppeteer Sharp)。

jsPDF:这也是开源使用的转换工具。

只是我个人的看法,我认为这两个的体验不如SelectPDF。也许还有其他免费且最新的 PDF 转换器,但我还没有找到它们,也没有使用它们。