知道如何使用iTextSharp渲染PDF,以便使用CSS渲染页面。 css既可以嵌入HTML中,也可以单独传递,我并不在乎,只是希望它能够工作。
具体的代码示例非常赞赏。
另外,我真的很想坚持使用iTextSharp,但是如果你有其他的建议,它必须是免费的,开源的,并且有许可证允许在商业软件中使用它。
答案 0 :(得分:9)
现在不可能,但没有什么可以阻止你启动开源项目。我可能真的开始了,因为我也需要它!
基本上你需要将html和css标记转换为iTextSharp类的解析器。因此<table>
成为iTextSharp.SimpleTable
等等。
很容易想出能够使用有限的html和css子集的原型。
更新:直到可以实现这一点,这就是我自己暂时解决的问题。只有两个步骤:
通过提供打印样式表,使所有html报告对打印机友好。
如果您的某些多页报告需要在每个页面上都有标题,请在THEAD html标记中进行设置。
现在用户可以打印友好,如果他们选择PDFCreator打印机驱动程序,他们甚至可以获得PDF格式的报告(还有其他pdf打印机驱动程序,但这一个是免费和开源的。) / p>
另外我知道HTML不像PDF那么灵活,但它可能已经足够好了。我正在与真实用户进行一些测试,他们实际上喜欢它,因为不仅他们现在可以打印任何PDF(甚至超出我的应用程序),他们的工作流程也更快,因为他们不必下载并等到他们的PDF阅读器打开起来。他们只是直接从他们的网络浏览器上打印(或导出到pdf)他们在网站上看到的内容......有点理由。
答案 1 :(得分:6)
答案 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;
}