我正在寻找适用于PHP的东西,类似于水晶报告。我基本上需要一个布局设置,这意味着我只需插入数据即可输出发票,然后将其发送到打印机。
到目前为止,我发现的最接近的是PDFB,但它需要精确定位,这有点痛苦。
我希望能够根据模板(最好是基于XML)生成发票,然后将其输出到易于打印的形式(PostScript会很棒!)
它也需要支持条形码(尽管这些可以作为GD图像生成)
另一个要求是这必须是FLOSS
答案 0 :(得分:12)
使用XML + XSL:FO与Apache FOP通过PHP-JavaBridge。
以下是:http://wiki.apache.org/xmlgraphics-fop/HowTo/PHPJavaBridge
PostScript会很棒!
许多PostScript打印机也了解PDF。
答案 1 :(得分:7)
我在PHP中使用过Spreadsheet_Excel_Writer
,这已经足够了。不是WYSIWYG,但它确实生成了XSL文件,我很高兴。之后,您可以use OpenOffice macro将文档转换为PDF。它可以从命令行工作,也可以从PHP脚本开始工作。
或者这是一个更好的方法。
使用OpenOffice转换Smarty模板。 Smarty是PHP的一个很酷的模板引擎,我推荐它用于此目的。然后使用PHP与Smarty生成纯HTML。最后,使用上述方法将生成的HTML转换为PDF。
报告革命(tm)。
编辑2009年6月6日 修改了吗?啊没关系。
无论如何,这种方法适用于无头服务器而无需运行X11。我从mentioned link获取了脚本(除了我把它放在预先存在的集合“Standard”而不是“DannysLibrary”中)然后我使用PuTTY从Windows机器运行此命令,并且X被关闭远程机器,并没有设置DISPLAY变量,而且......好吧,无论如何,OOo都无法找到要连接的X11。
$ openoffice.org -invisible -headless "macro:///Standard.Conversion.ConvertWordToPDF(`pwd`/logaritamska.doc)"
这是有效的,我相信这对于那些需要从其他格式转换为PDF的人来说非常有用,包括从HTML生成可打印的报告。通过编辑宏,您甚至可以让OOo直接从stdin或临时服务URL读取,并输出到预定义文件中。一旦你有了扩展的基本代码,link上的脚本就非常简单了。
要点:
编辑2009年6月9日
我试过用这种方式实现在线转换器。您应该使PHP在您创建宏的同一用户下运行。这个用户显然不能是www-data。我试图使用suphp,但由于某种原因它没有正确地改变用户(posix_getuid()
保持返回33这是www-data)。一旦解决了这个问题,我就会编辑它。
编辑2009年6月26日 猜猜我花了一段时间来报告。是的,这适用于suphp。然而,我无法显示它,因为我唯一的服务器运行了一个相对关键的网络应用程序,没有专业的安全审计。这意味着我们依赖于保护后端的一个方面是前端运行的用户是一个非常非常无特权的用户(例如www-data)。不要问: - )
希望这有助于某人:是的,使用OO.o转换为PDF是非常现实的。在OO.o中甚至有一些远程呼叫支持,但我没有仅仅为了写这个目的而研究它。
答案 2 :(得分:6)
我在php中使用了eclpse:“BIRT Project”
http://www.eclipse.org/birt/phoenix/
您在Eclipse中设计报表。 然后将其上传到您的服务器(它必须运行tomcat)我知道。 然后你可以从php应用程序调用该报告 您可以通过查询字符串将参数发送到报告:
/myreport.birt?param=var¶m2=var2
到目前为止,我们有一个4年的申请工作。 大约有100份报告,而且效果非常好。
当然是开源的。
祝你好运答案 3 :(得分:5)
如果您有服务器访问权限,则可能还希望通过XSL Formatting Objects转到Apache FOP。 XSL-FO是基于XML的,支持很多output formats,包括PostScript和PDF
答案 4 :(得分:4)
如果您设法在php环境中调用Java应用程序(通常应该可以)JasperReports可能是您正在寻找的东西:
答案 5 :(得分:4)
在我看来,它是最好,最详细,功能最丰富的PHP报表设计器之一。
答案 6 :(得分:1)
嗯..我在当前的项目中遇到了同样的问题,我最终使用了水晶报告,并用一个用c#编写的asp.net Web服务调用报告。 Web服务并不复杂,您仍然可以使用水晶报表的所有功能。 我不认为你会发现任何完全基于PHP的报告引擎可以与水晶报告进行比较......我还没能找到一个...
答案 7 :(得分:1)
一年前我遇到了同样的问题。在搜索了现有的解决方案之后,我找不到一个,所以我使用Zend Framework的PDF生成库编写了一个精简的水晶报告。我不得不大量调整他们的库来支持分组对象,重复部分和模板。它工作,但它真的很笨重,如果我不得不再次这样做,我会找到一种方法将PHP桥接到水晶报告,或者通过像Gushiken说的网络服务,或者通过调用命令行应用程序。 CPAN具有C.R的Perl接口:Win32::OLE::CrystalRuntime::Application 。
如果一个PHP解决方案在过去一年中已经发布,我怀疑它是否足够成熟,可以与C.R.比较。不要浪费你的时间拉你的头发 - 去做有用的。时间很贵。软件不是。
答案 8 :(得分:1)
满足这种需求的正确工具是XSL-FO,因为它非常适合可打印的媒体。 XSL-FO也是一个使用XSLT的W3C推荐标准。 我已经制作了一个使用XSL-FO作为报告中间语言的php工具,这个XLS-FO是将报告XSLT模板与XML数据合并(处理)的结果。
您可以使用MS Word自动创建模板,并按照用户手册中的说明进行导出。然后,您使用模板提供报告引擎,并在运行时使用数据XML。
同样在运行时,生成的XSL-FO报告将呈现为:
a)相同的XSL-FO(如果你想调试或只是想要一个XSL-FO)
b)完美的PDF,(ApacheFOP渲染XSL-FO)
c)使用XSLFO2HTML转换的HTML。
这里有项目,它是一个symfony 1.4插件: https://github.com/juanmf/sfPlugins/tree/master/reportPlugin
我计划将它与科幻小组分开。不要犹豫,不要问任何问题。这是HowTo: https://github.com/juanmf/sfPlugins/blob/master/reportPlugin/doc/HowToReport.pdf?raw=true
这篇文章也可能会给你一些帮助: https://stackoverflow.com/questions/5519024/report-engine-solution-for-lamp-application/13042656
问候!
答案 9 :(得分:0)
答案 10 :(得分:0)
我使用了phpreports,我必须承认它对于基于网络的报告并不坏,因为它支持页眉,页脚,群组,小计等等。
答案 11 :(得分:-1)
看看siwapp.org,它是基于Symphony Framework的开源发票应用程序,它处于早期测试阶段,但非常有希望。