在 iTextSharp 中使用 CSS 从 HTML 渲染 PDF

Posted

技术标签:

【中文标题】在 iTextSharp 中使用 CSS 从 HTML 渲染 PDF【英文标题】:Render PDF in iTextSharp from HTML with CSS 【发布时间】:2010-09-30 15:00:36 【问题描述】:

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

非常感谢具体的代码示例。

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

【问题讨论】:

我将在我的新房地产项目中使用 iTextSharp,我将从选定的房地产中创建一个 PDF 文件并将其发送打印。如果您提到的“使用 css”是可能的,那就太好了。我希望有人就你的问题给我们一个详细的答案。谢谢 看看this similar question。 【参考方案1】:

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

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

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

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

告诉您的用户下载名为PDFCreator 的开源应用程序

通过提供用于打印的样式表,使您的所有 html 报告对打印机友好。

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

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

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

【讨论】:

哈...要是我有时间就好了。如果我还没有从事我正在尝试使用 iTextSharp 的其他项目,我会这样做。此外......我很讨厌解析器...... 您应该查看Rotativa。这里也有一个blog post,它解释了如何使用 Nuget 包管理器获取它。它基于 Mic 在另一个答案中提到的 wkhtmltopdf。【参考方案2】:

试试 WKHTMLTOPDF。

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

我们设置了一个小教程here

【讨论】:

糟透了!真的,它有时会消耗 100% 的 CPU! @ShilpaSoni 很奇怪,我们在生产中使用它多年,从未遇到过任何 CPU(或其他)问题 您的 HTML 可能不太复杂。【参考方案3】:
 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;
        

【讨论】:

以上是关于在 iTextSharp 中使用 CSS 从 HTML 渲染 PDF的主要内容,如果未能解决你的问题,请参考以下文章

HTML 到 PDF - iTextSharp 中的 CSS

样式未使用ITextSharp在PDF中实现[复制]

制作pdf时无法让CSS在iTextSharp(5.4.3)中工作

使用 itextsharp 将 HTML 转换为 PDF

使用 iTextSharp 的后备字体

C# html生成PDF遇到的问题,从iTextSharp到wkhtmltopdf