【问题标题】:Get PDF output from XML generated by a PHP file and translated with an XSLT从 PHP 文件生成并使用 XSLT 翻译的 XML 获取 PDF 输出
【发布时间】: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

这就是我的想法:

  1. 用户调用 php 文件,该 php 文件生成具有特定名称的源 XML 文件
  2. 然后,php 文件向 Cocoon(在同一 Web 服务器上)发出请求,以在 XML 文件上应用用户定义的 XSLT。这里需要一个参数来知道要应用哪个 XSLT。
  3. 请求由 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


【解决方案1】:

过去通过设置JasperReports Server 并使用iReport Designer 创建报告,我取得了一些不错的成绩。它们都在 F/OSS(“社区”)版本中可用,但如果您需要这些东西,您可以支付支持和增值费用。

这对我们来说是一个很好的解决方案,因为对于我们的 Java 系统,我们可以通过 Java API 访问它,对于我们的 PHP 系统,我们可以通过 SOAP 访问它。 GUI 设计师也让非技术业务人员非常容易调整报告。

【讨论】:

    【解决方案2】:

    我使用 webkithtml2pdf 来生成我的 PDF:s。只需像往常一样创建一个用于打印的 HTML 和 CSS 文档,然后通过转换器运行它。

    它非常适合生成发票等内容。您可以将 SVG 用于徽标和插图,因为它们是基于矢量的,所以它们在打印中看起来很棒。即使是带有虚线轮廓的圆角也可以完美地工作。

    一个小问题是输入的 html 必须有 th htm 或 html 文件名后缀,所以你不能使用默认的 tempfile 函数。

    【讨论】:

    • 感谢您的回答。 Halfer 提出了一个绝妙的主意,即使用 Jasper 报告及其 SOAP 客户端,该客户端将完美地服务于此。感谢您的帮助!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-04-12
    • 1970-01-01
    • 2021-03-21
    • 2013-07-05
    • 2011-02-14
    • 2013-08-13
    • 2023-03-21
    相关资源
    最近更新 更多