当前位置:  开发笔记 > 编程语言 > 正文

在.NET中将HTML转换为PDF

如何解决《在.NET中将HTML转换为PDF》经验,为你挑选了12个好方法。

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

有没有更好的办法?



1> Marko..:

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

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


@bamccaig我已经得到它=)https://github.com/gmanny/Pechkin它公开了库的每个可用功能,并且还有用于多线程的包装器.它在NuGet上.
支持.NET ??
在C#中使用它http://stackoverflow.com/questions/4651373/how-to-pass-html-as-a-string-using-wkhtmltopdf/6787041#6787041
@AdamMoszczyński:[来自维基百科](http://en.wikipedia.org/wiki/GNU_Lesser_General_Public_License):LGPL允许开发人员和公司使用LGPL软件并将其集成到他们自己的(甚至是专有的)软件中而不需要(通过条款)一个强大的copyleft)发布他们自己的软件部分的源代码.
它是一个独立的可执行文件.您可以将其作为进程启动,并将HTML文档的URL作为参数传递.
我一直在尝试制作.NET绑定(http://github.com/bamccaig/WkHtmlToPdfDflat),但我无法让它工作(我甚至无法直接从C使用C绑定).:\
wkhtmtopdf根据[LGPL](http://www.gnu.org/licenses/lgpl.html)获得许可:(
它对我有用,并且对阿拉伯语等多语种有很好的支持,唯一的缺点是我需要使用“完全信任”级别,以防使用IIS,这在共享主机或云环境中通常不可行除非您拥有自己的专用服务器,否则作为托管服务提供商进行托管将不会给您“完全信任”级别。
WkHtmlToPdf的即用型免费.NET包装器:[NReco.PdfGenerator](http://www.nrecosite.com/pdf_generator_net.aspx).您只需要一个NReco.PdfGenerator.dll,它嵌入所有需要的WkHtmlToPdf文件,并简化使用常见选项(如页面大小,页眉/页脚,边距等).
有一个名为TuesPechkin的Pechkin库的更新分支(https://github.com/tuespetre/TuesPechkin).它也可以通过NuGet获得.
我在周末做了一些工作,[wkhtmltopdf](http://wkhtmltopdf.org/)是最好的解决方案,.Net包装器是唯一的问题.我发现[NReco](http://www.nrecosite.com/pdf_generator_net.aspx)非常简单可靠,并且有一个NuGet包.这是所有需要的代码`var htmlContent = String.Format(" Hello world:{0} ",DateTime.Now); var pdfBytes =(new NReco.PdfGenerator.HtmlToPdfConverter()).GeneratePdf(htmlContent);`[Pechkin](https://github.com/gmanny/Pechkin)并不像NReco那样容易.

2> Anestis Kivr..:

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

(在尝试wkhtmltopdf并建议避免它之后)

HtmlRenderer.PdfSharp是一个100%完全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解决方案,并遇到了一些障碍.

我个人会避免在托管企业应用程序上使用基于wkhtmltopdf的解决方案,原因如下.

    首先,wkhtmltopdf是C++实现的而不是C#,您将遇到在C#代码中嵌入它的各种问题,尤其是在项目的32位和64位版本之间切换时.不得不尝试几种解决方法,包括条件项目构建等,以避免在不同的机器上"无效格式异常".

    如果您管理自己的虚拟机,那就可以.但是,如果你的项目就像是一个约束的环境中运行(天青 (实际上是由TuesPenchin笔者提到不可能withing蔚蓝), 弹性魔豆等),它来配置环境只为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 View 直接生成PDF .

此外,对于真实的Web应用程序,他们还管理线程安全等...


我们尝试了HtmlRenderer.没有加载任何CSS时它真的很快.但是当我们尝试应用CSS(Bootstrap加上一些定制)时,CSS解析需要一段时间(我们可能会缓解),并且渲染与网页完全不同.
感谢您更新帖子.我要试试PdfSharp.你救了我很多时间.
BS.这将创建HTML的图像并将图像添加到pdf文件中.这根本不是真正的PDF.此外,PDF是一种矢量图形格式 - 您可以无限滚动 - 当然,除非PDF由光栅图形组成,这是该库生成的.

3> 小智..:

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

代码是这样的:

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

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


d1jhoni1b,这怎么会让它无用?如果它是一种付费工具,那么它可能被认为是昂贵的,但仅凭这一标准并非毫无用处.
它没用,因为你必须购买这个库
650美元的单一开发者许可证.这很昂贵.
它是免费图书馆吗?
这是真的EO.Pdf不使用IE浏览器.但它似乎确实在后台产生了32位webkit浏览器实例.检查您的进程列表,您将看到它们为指向EO.PDF dll的rundll32.exe实例.所以在我看来它仍然有点黑客.

4> Markus..:

我最近执行了关于HTML到PDF转换的PoC,并希望分享我的结果.

我最喜欢的是OpenHtmlToPdf

该工具的优点:

非常好的HTML兼容性(例如,它是我的示例中唯一一个工具,当一个表跨越多个页面时正确重复的表头)

流畅的API

免费和OpenSource(知识共享署名3.0许可证)

可通过NuGet获得

其他测试工具:

ExpertPDF(http://www.html-to-pdf.net/)

IronPDF(http://ironpdf.com/)

iTextSharp(https://sourceforge.net/projects/itextsharp/)

适用于.NET的NReco PDF Creator(http://www.nrecosite.com/pdf_generator_net.aspx)

PDF Sharp的HTML渲染器(https://www.nuget.org/packages/HtmlRenderer.PdfSharp/)

SelectPDF社区版(http://selectpdf.com/community-edition/)



5> Kim Tranjan..:

我非常推荐NReco.它有免费和付费版本,非常值得.它在后台使用wkhtmtopdf,但你只需要一个程序集.太棒了.

使用示例:

通过NuGet安装.

var htmlContent = String.Format("Hello world: {0}", DateTime.Now);
var pdfBytes = (new NReco.PdfGenerator.HtmlToPdfConverter()).GeneratePdf(htmlContent);

免责声明:我不是开发人员,只是该项目的粉丝:)


看起来确实很有用.值得注意的是,截至今天(05/10/15),它是wkhtmtopdf(作为Nuget包)下载量最大的.Net包装器.
尝试过,遗憾的是我无法在azure的网页上使用它.

6> Stewart..:

Winnovative提供支持HTML输入的.Net PDF库.他们提供无限制的免费试用.根据您希望部署项目的方式,这可能就足够了.


请记住,当我们上次检查时,winnovative与IE9不兼容(因为它们使用IE9中删除的IE GDI渲染引擎).因此,如果您在使用它的计算机上安装了IE9,则转换将无效.他们可能已经解决了这个问题,但是很多商业组件都使用了IE渲染引擎,并且在IE9中出现了问题,所以值得一试.

7> 小智..:

基本PDF可用于将HTML转换为PDF:C#sample.链接到此处的示例是基于ASP.NET的,但可以从Windows窗体,WPF,ASP.NET Webforms和ASP.NET MVC使用该库.该库提供了使用不同HTML呈现引擎的选项:Internet Explorer(默认)和WebKit(最佳输出).

如果您符合条件,则可通过社区许可计划免费获得整套控件(商业应用程序).社区许可证是完整的产品,没有任何限制或水印.

注意:我为Syncfusion工作.



8> 小智..:

我使用了ExpertPDF Html To Pdf Converter.做得体.不幸的是,这不是免费的.



9> 小智..:

还有一个新的基于Web的文档生成应用程序 - DocRaptor.com.看似易于使用,并且有免费选项.



10> Peter Krauss..:
2018年的更新,让我们使用标准的HTML + CSS = PDF等式!

有关HTML-to-PDF要求的好消息.正如这个答案所示,W3C标准css-break-3将解决这个问题 ......这是一个候选推荐标准,计划在经过测试后于2017年或2018年转为最终推荐标准.

由于没有那么标准,因此有一些解决方案,带有C#插件,如print-css.rocks所示.



11> Stewart..:

如果您真的不需要真正的.Net PDF库,那么有许多免费的HTML到PDF工具,其中许多可以从命令行运行.

一种解决方案是选择其中一种,然后在C#中编写一个薄包装器.例如,正如本教程中所做的那样.



12> Mauricio Gra..:

上次更新时间:2019年9月

这是我汇总的.NET中HTML到PDF转换的选项列表(有些是免费的,有些是付费的)

HtmlRenderer.PdfSharp

https://www.nuget.org/packages/HtmlRenderer.PdfSharp/1.5.1-beta1

BSD-UNSPECIFIED许可证

木偶夏普

https://www.puppeteersharp.com/examples/index.html

麻省理工学院执照

https://github.com/kblok/puppeteer-sharp

环氧乙烷

https://www.nuget.org/packages/EO.Pdf/

$ 749 https://www.essentialobjects.com/Purchase.aspx?f=3

WnvHtmlToPdf_x64

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

1200美元-http: //www.winnovative-software.com/Buy.aspx

演示-http: //www.winnovative-software.com/demo/default.aspx

铁Pdf

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

$ 399-$ 1599- https://ironpdf.com/licensing/

https://ironpdf.com/examples/using-html-to-create-a-pdf/

尖顶PDF

https://www.nuget.org/packages/Spire.PDF/

599美元https://www.e-iceblue.com/Buy/Spire.PDF.html

https://www.e-iceblue.com/Tutorials/Spire.PDF/Spire.PDF-Program-Guide/Convert-HTML-to-PDF-Customize-HTML-to-PDF-Conversion-by-Yourself.html

Aspose.Html

https://www.nuget.org/packages/Aspose.Html/

599美元-https: //purchase.aspose.com/pricing

https://docs.aspose.com/display/htmlnet/HTML+to+PDF+转换

EvoPDF

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

450美元-1200美元-http: //www.evopdf.com/buy.aspx

ExpertPdfHtmlToPdf

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

$ 550-$ 1200- https://www.html-to-pdf.net/Pricing.aspx

邮编

https://zetpdf.com

249美元-https: //zetpdf.com/pricing/

是不是众所周知的或受支持的库-ZetPDF-有人知道该产品的背景吗?

PDFtron

https://www.pdftron.com/documentation/samples/cs/HTML2PDFTes

$ 4000 /年

WkHtmlToXSharp

https://github.com/pruiz/WkHtmlToXSharp

自由

并发转换被实现为处理队列

选择PDF

https://selectpdf.com/pdf-library-for-net/

免费(最多5页)

$ 499-1个开发人员,1个部署计算机https://selectpdf.com/pricing/

https://www.nuget.org/packages/Select.HtmlToPdf/

如果以上选项均无济于事,您可以随时搜索NuGet软件包 https://www.nuget.org/packages?q=html+pdf

推荐阅读
sx-March23
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有