在.NET中将HTML转换为PDF

我想通过将HTML内容传递给函数来生成PDF。 我已经使用了iTextSharp,但它在遇到表格时表现不佳,布局变得混乱。

有没有更好的办法?


尝试wkhtmtopdf。 这是迄今为止我发现的最好的工具。

对于.NET,您可以使用这个小型库轻松调用wkhtmtopdf命令行实用程序。


编辑:使用PdfSharp的PDF 新建议 HTML渲染器

(尝试wkhtmltopdf并建议避免它)

HtmlRenderer.PdfSharp是完全完全的C#托管代码易于使用,线程安全且最重要的是免费 (新BSD许可证)解决方案。

用法

  • 下载HtmlRenderer.PdfSharp nuget包。
  • 使用示例方法。

    public static Byte[] PdfSharpConvert(String html)
    {
        Byte[] res = null;
        using (MemoryStream ms = new MemoryStream())
        {
            var pdf = TheArtOfDev.HtmlRenderer.PdfSharp.PdfGenerator.GeneratePdf(html, PdfSharp.PageSize.A4);
            pdf.Save(ms);
            res = ms.ToArray();
        }
        return res;
    }
    
  • 一个很好的替代品是iTextSharp的免费版本

    在版本4.1.6之前,iTextSharp已获得LGPL许可证和版本,直到4.16版(或可能还有叉)可作为软件包使用,并且可以自由使用。 当然,有人可以使用续5+付费版本。

    我试图将wkhtmltopdf解决方案整合到我的项目中,并遇到一些障碍。

    我个人会避免在Hosted Enterprise应用程序上使用基于wkhtmltopdf的解决方案,原因如下。

  • 首先wkhtmltopdf是C ++实现的不是C#,你会遇到将它嵌入到C#代码中的各种问题,特别是在你的项目的32位和64位构建之间切换时。 必须尝试几个解决方法,包括有条件的项目建设等,以避免在不同机器上出现“无效格式异常”。
  • 如果你管理自己的虚拟机,那就好了。 但是如果你的项目运行在一个受限制的环境中,像( Azure (实际上不可能像周二作者提到的Azure那样), Elastic Beanstalk等),配置这个环境只是为了让wkhtmltopdf工作,这是一场噩梦。
  • wkhtmltopdf正在您的服务器中创建文件,因此您必须管理用户权限并授予对wkhtmltopdf运行位置的“写入”权限。
  • Wkhtmltopdf作为独立应用程序运行,因此它不受您的IIS应用程序池管理 。 因此,您必须将其作为另一台计算机上的服务托管,否则您将在生产服务器上遇到巨大的处理高峰和内存消耗。
  • 它使用临时文件来生成pdf,并且在像AWS EC2这样的磁盘I / O非常慢的情况下,这是一个很大的性能问题。
  • 最讨厌的“无法加载DLL'wkhtmltox.dll'”许多用户报告错误。
  • --- PRE编辑章节---

    对于任何想在简单的应用程序/环境中从html生成pdf的人,我都会留下我的旧帖子作为建议。

    TuesPechkin

    https://www.nuget.org/packages/TuesPechkin/

    或特别是对于MVC Web应用程序(但我想你可以在任何.net应用程序中使用它)

    Rotativa

    https://www.nuget.org/packages/Rotativa/

    他们都利用wkhtmtopdf二进制文件将html转换为pdf。 它使用webkit引擎来渲染页面,以便它也可以解析css样式表

    它们提供与C#的无缝集成。

    Rotativa还可以从任何Razor视图直接生成PDF。

    另外对于真实世界的Web应用程序,他们还管理线程安全等。


    大多数HTML到PDF转换器都依靠IE来完成HTML解析和渲染。 当用户更新他们的IE时,这可能会中断。 这是一个不依赖于IE的。

    代码是这样的:

    EO.Pdf.HtmlToPdf.ConvertHtml(htmlText, pdfFileName);
    

    像许多其他转换器一样,您可以传递文本,文件名或Url。 结果可以保存到文件或流中。

    链接地址: http://www.djcxy.com/p/46751.html

    上一篇: Convert HTML to PDF in .NET

    下一篇: iTextSharp is producing a corrupt PDF