用于将HTML转换为PDF的iTextSharp的替代方案

时间:2011-12-23 08:12:48

标签: c# html pdf itextsharp

我想使用iTextSharp将HTML文件转换为PDF格式。

我使用了this code

然后,我执行以下操作将其转换为pdf:

HTMLWorker htmlWorker = new HTMLWorker(document);
htmlWorker.Parse(new StringReader(results));
document.Close();

但是,没有解析任何CSS。任何替代方案?

4 个答案:

答案 0 :(得分:11)

18个月前,我们对大多数可用的html-to-pdf转换器(付费和免费)进行了彻底的测试。最后,最好的 html-to-pdf转换器是一个名为wkhtmltopdf的免费开源程序。

它是命令行驱动的,使用webkit渲染引擎,并且准确地(更重要的是,一致地)将网页变成漂亮的pdf。它还具有各种有用的命令行开关,为您提供完整的页眉/页脚控制,可选择创建目录页面,并且运行速度非常快。 AND - 因为它是命令行驱动的,它有额外的好处,可以轻松地用于批量生成。你根本不会出错。

作为旁注,该程序还有一个名为wkhtmltoimage的姐妹程序(下载中捆绑),其工作方式完全相同,但将网页转换为各种图像格式。这也非常有用,我们使用此功能在构建工作提案时拍摄基于Web的工具的快照。

我知道我听起来像个狂热的粉丝,但我不是。我只是一个对所有那些转换器感到厌倦的人,当我们找到了wkhtmltopdf时,我被双倍地吹走了。我根本不能推荐这个小程序。

答案 1 :(得分:2)

就替代方案而言,我只能推荐ABCpdf,我们已成功将其用于将大量HTML文档转换为PDF作为我们的某个Web应用程序的一部分。

答案 2 :(得分:2)

它不会自动加载它。您需要手动执行以下操作。

 StyleSheet ss = new StyleSheet();
 ss.LoadStyle("body", "leading", "16,0");
 ss.LoadStyle("p", "style", "font-family:Times New Roman");

然后你使用

List<IElement> htmlToPDF = HTMLWorker.ParseToList(new StringReader("<font face=\"Times\">" + html + "</font>"), style);

foreach (IElement element in htmlToPDF ) {
    document.Add(element);
  }

但是,只有一些样式在itextsharp中工作而不是全部。

实际上你应该尝试XMLWorker,一个itextsharp的插件。它刚刚在本月发布。它可以比仅使用itextsharp更好地处理html。

我认为wkhtmltopdf项目看起来也很不错,但我不知道它是否会对我们的生产环境有好处,因为Web应用程序是多线程程序。

答案 3 :(得分:1)

晚了好,但从来没有,但这是一个很好的例子,也解释了什么是可能的,什么不是:http://www.thiscouldbeuseful.com/2012/04/itextsharp-to-rescue-converting-html-to.html

我更喜欢iTextSharp,因为它提供了最多的功能。