21

知道如何使用 iTextSharp 呈现 PDF,以便它使用 CSS 呈现页面。css 可以嵌入到 HTML 中,也可以单独传入,我真的不在乎,只是希望它工作。

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

此外,我真的很想坚持使用 iTextSharp,但如果您确实对其他内容有建议,它必须是免费的、开源的,并且拥有允许在商业软件中使用它的许可证。

4

3 回答 3

9

现在不可能,但没有什么能阻止你启动开源项目来做到这一点。我实际上可能会开始一个,因为我也需要它!

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

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

更新:在这成为可能之前,这就是我暂时为自己解决的方法。只需两步:

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

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

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

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

于 2009-01-10T04:21:04.333 回答
6

试试 WKHTMLTOPDF。

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

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

于 2009-08-31T13:47:42.183 回答
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;
        }
于 2015-12-22T12:19:09.863 回答