繁体   English   中英

使用CSS从HTML在iTextSharp中渲染PDF

[英]Render PDF in iTextSharp from HTML with CSS

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

具体的代码示例,将不胜感激。

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

目前尚不可能,但是没有什么可以阻止您启动将要执行的开源项目。 我可能实际上会开始一个,因为我也需要它!

基本上,您将需要将HTML和CSS标记转换为iTextSharp类的解析器。 因此<table>变成了iTextSharp.SimpleTable等等。

能够与有限的html和css子集一起工作的原型很容易提出。

更新:在可能之前,这就是我临时为自己解决的方式。 仅需两个步骤:

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

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

现在,用户将能够进行友好的打印,并且如果他们选择PDFCreator打印机驱动程序,他们甚至可以获取PDF格式的报告(还有其他pdf打印机驱动程序,但是该驱动程序是免费的且开源的)。

我也知道HTML不如PDF灵活,但它可能已经足够了。 我正在与真实用户进行一些测试,他们实际上很喜欢,因为他们不仅可以将任何内容打印为PDF(甚至超出我的应用程序),而且他们的工作流程更快,因为他们无需下载并等待pdf阅读器打开起来 他们只是直接从Web浏览器中打印(或导出为pdf)他们在网站上看到的内容,这很有意义。

尝试WKHTMLTOPDF。

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

我们在这里设置了一个小教程

 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;
        }

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM