【发布时间】:2012-06-07 20:10:57
【问题描述】:
我花了几天时间想出了一个生成 PDF 的最佳实践,最终用户可以自己自定义布局。 PDF 输出需要保存在服务器上或发送回 PHP 文件,以便 PHP 文件可以保存它,并且 PHP 文件需要知道一切正常。
我认为最好的方法是使用 XML、XSLT 和 Apache Cocoon。但我不确定这是否可能,或者这是一个好主意,因为我找不到任何类似的人的信息。这不可能是一个不常见的问题。
当我读到 Cocoon 通过 XSLT 将 XML 转换为 PDF 时,这个想法就产生了:
http://cocoon.apache.org/2.1/howto/howto-html-pdf-publishing.html
并且能够接受变量:
http://old.nabble.com/how-to-access-post-parameters-from-sitemap-td31478752.html
这就是我的想法:
- 用户调用 php 文件,该 php 文件生成具有特定名称的源 XML 文件
- 然后,php 文件向 Cocoon(在同一 Web 服务器上)发出请求,以在 XML 文件上应用用户定义的 XSLT。这里需要一个参数来知道要应用哪个 XSLT。
- 请求由 PHP 文件处理,然后在服务器上保存为 PDF,以后可以邮寄出去。
这会起作用吗?有没有更好的方法来处理这个问题?
核心问题是用户需要能够自己自定义 PDF 的布局,而我需要服务器来保存 PDF 并稍后发送。用户将其用于订单确认、发票等。我不想为每个用户硬编码布局。
【问题讨论】:
-
听起来会起作用,但是是否有更好的方法来做你想做的事取决于太多的事情来给出明确的答案。 XSLT 文件是在系统中预定义的,还是用户必须上传自己的文件才能做他们想做的事?
-
对我来说,生成报告样式的 PDF 最好通过 GUI 工具完成,您可以在其中设计您的部分。我为此使用了 Jasper 和 iReport,它确实工作得很好。 Jasper 提供了一个 SOAP 接口,因此您可以使用 PHP 启动它。
-
嗨!谢谢你们的cmets!我一直在考虑使用 Jasper 作为报告工具。但是没有想过用这种方式。但你是绝对正确的。我不需要 XML 源,我会让他们设计一个带有正确参数的报告模板。然后通过 PHP SOAP 客户端访问该报告。我用谷歌搜索了一下,立即得到了一些不错的结果:jasperapiclient.googlecode.com/svn-history/r2/trunk/… 非常感谢您为我指明了正确的方向。我想将您的评论标记为正确答案。你会写答案吗?
-
Josef,谢谢 - 很高兴这对你有用
:)。
标签: php xml xslt pdf apache-cocoon