如何创建格式良好的PDF?

时间:2012-02-22 21:11:23

标签: html css xml pdf xsl-fo

我正致力于自动化公司发票系统。目前,所有数据都存储在我们的本地MySQL数据库中,有人手动更新excel电子表格,然后将这些数据合并到MS Word模板中。目标是自动化此过程,以便可以从我们的Intranet网站以PDF格式生成发票。

我最初的计划是在HTML / CSS中创建一个模板并使用wkhtmltopdf来生成PDF,但是我遇到了在每个页面上获得可重复的页眉和页脚的问题。 Webkit不支持theadtfoot,修正建议in this other question似乎也不起作用。

所以我偶然发现使用XML和XSL-FO,后者我一无所知。这是最好的选择吗?是否有任何库或实用程序可以将我的HTML + CSS转换为XML + XSL-FO更容易?还有其他我想忽视的选择吗?

修改

目前,服务器是带有MySQL数据库的CentOS Linux。目前所有其他代码都在PHP中,但随着整个系统的改进,这可能会发生变化。不过,Linux和MySQL几乎肯定会保留下来。

4 个答案:

答案 0 :(得分:4)

根据您的要求,XSL-FO可能就是这样做的。直接从数据生成pdf更加清晰,然后去繁琐的html路径,除非你需要显示html,然后你可以考虑从html转换为pdf,但它总是很乱。

您可以非常轻松地从mysql获取xml结果(mysql --xml),然后为数据编写一个(或几个)xsl-fo样式表。那么,你不仅可以生成pdfs,还可以生成一些处理器的postscript文件或rtf文件。

XSL-FO有其局限性,但对于您的情况,它应该足够了。

我承认,学习曲线可能非常陡峭,并且维护xslt-stylesheets可能会非常累人,但随着您开始了解更多信息,您最终会编写更少的代码。

另一种可能性是在例如java或c# - 发送select语句并循环结果,并使用像iText这样的库迭代地构建pdf。

答案 1 :(得分:1)

您可以尝试JODReportsDocmosis作为代码较少的选项。您提供Word或OpenOffice Writer文档作为模板,并使用这些引擎来操作/填充模板,然后以您需要的格式吐出文档。这可能意味着您可以直接使用现有的Word模板,这可以为您节省一些精力/时间。

iText是另一个允许您从代码构建和抽取PDF的库。这很不错。

答案 2 :(得分:0)

如果你使用ASP.NET for web,你可以使用免费的ReportViewer库和设计器来自动发布PDF-s。 以下是一些参考文献:
http://gotreportviewer.com

http://weblogs.asp.net/srkirkland/archive/2007/10/29/exporting-a-sql-server-reporting-services-2005-report-directly-to-pdf-or-excel.aspx

答案 3 :(得分:0)

如果你可以使用.NET和C#,你可以使用DotPdf from Atalasoft(强制性免责声明:我为Atalasoft工作并写了大部分DotPdf)。 Generating命名空间适合您正在尝试执行的操作:自动生成报告。从基础知识开始,您可以直接使用工具包创建文档,也可以创建具有未填充文本字段的模板文档,以便稍后重新加载和填充(有关示例,请参阅herehere)。 / p>