使用CSS从HTML中在iTextSharp中渲染PDF

时间:2009-01-10 00:45:15

标签: c# html pdf itextsharp

知道如何使用iTextSharp渲染PDF,以便使用CSS渲染页面。 css既可以嵌入HTML中,也可以单独传递,我并不在乎,只是希望它能够工作。

具体的代码示例非常赞赏。

另外,我真的很想坚持使用iTextSharp,但是如果你有其他的建议,它必须是免费的,开源的,并且有许可证允许在商业软件中使用它。

3 个答案:

答案 0 :(得分:9)

现在不可能,但没有什么可以阻止你启动开源项目。我可能真的开始了,因为我也需要它!

基本上你需要将html和css标记转换为iTextSharp类的解析器。因此<table>成为iTextSharp.SimpleTable等等。

很容易想出能够使用有限的html和css子集的原型。

更新:直到可以实现这一点,这就是我自己暂时解决的问题。只有两个步骤:

  • 告诉您的用户下载名为PDFCreator
  • 的开源应用
  • 通过提供打印样式表,使所有html报告对打印机友好。

    如果您的某些多页报告需要在每个页面上都有标题,请在THEAD html标记中进行设置。

现在用户可以打印友好,如果他们选择PDFCreator打印机驱动程序,他们甚至可以获得PDF格式的报告(还有其他pdf打印机驱动程序,但这一个是免费和开源的。) / p>

另外我知道HTML不像PDF那么灵活,但它可能已经足够好了。我正在与真实用户进行一些测试,他们实际上喜欢它,因为不仅他们现在可以打印任何PDF(甚至超出我的应用程序),他们的工作流程也更快,因为他们不必下载并等到他们的PDF阅读器打开起来。他们只是直接从他们的网络浏览器上打印(或导出到pdf)他们在网站上看到的内容......有点理由。

答案 1 :(得分:6)

尝试WKHTMLTOPDF。

这是webkit的开源实现。两者都是免费的。

我们设置了一个小教程here

答案 2 :(得分:2)

 List<DateTime[]> getListWeeks(int annee)
        {
            List<DateTime[]> weeks = new List<DateTime[]>();
            DateTime beginDate = new DateTime(annee, 1, 1);
            DateTime endDate = new DateTime(annee, 12, 31);
            int nb =(int)beginDate.DayOfWeek;
            DateTime monday = beginDate.AddDays(-nb+1); ;
            DateTime saturday = monday.AddDays(6);
            while (monday < endDate)
            {
                    weeks.Add(new DateTime[] { monday, saturday });
                    monday = monday.AddDays(7);
                    saturday = monday.AddDays(6);
            }
            return weeks;
        }