Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Something like Crystal Reports for PHP?

I'm looking for something that works in PHP and is similar to crystal reports. I basically need to have a layout setup that means I can output invoices just by inserting the data, and then send it to a printer.

The closest I've found so far is PDFB, but It's a bit of a pain as it needs to have precise positioning.

I'd like to have something that could generate an invoice based on a template (preferably XML based) and then output it to a form easy for us to print (PostScript would be nice!)

It needs to have support for barcodes too (though these can be generated as a GD image)

Another requirement is that this must be FLOSS

like image 419
Mez Avatar asked Apr 14 '09 11:04

Mez


People also ask

Can we use Crystal Reports in PHP?

Please try this method in php, you only have connectivity issue and some configuration are required at window side for crystal reports to work it correctly.

What programming language is Crystal Reports?

The Crystal Report Writer is a general-purpose report creation engine. It is capable of reading many different data bases using SQL as the command language for creating reports.

Do companies still use Crystal Reports?

One of the downsides to software that has been around so long and through so many permutations is that older versions are not easy to upgrade. Many organizations are still operating legacy versions of Crystal Reports, and there is a cost to upgrade to the most current version.


2 Answers

Use XML + XSL:FO with Apache FOP via PHP-JavaBridge.

Here is how: http://wiki.apache.org/xmlgraphics-fop/HowTo/PHPJavaBridge

PostScript would be nice!

Many PostScript printers understand PDF too.

like image 180
vartec Avatar answered Oct 05 '22 05:10

vartec


I've used Spreadsheet_Excel_Writer in PHP, and it's good enough. Not WYSIWYG, but it does generate XSL files, and I'm happy with it. Afterwards, you can use OpenOffice macro to convert the document to PDF. It works from command line, ergo, it works from PHP scripts too.

Or here's an even better way.

Use OpenOffice to convert a Smarty template. Smarty is a cool templating engine for PHP, I recommend it for this purpose. Then generate pure HTML using PHP with Smarty. Finally, just convert the generated HTML into PDF using aforementioned method.

Reporting Revolutionized (tm).

EDIT Jun6 2009 Modded down? Ah, nevermind.

Anyways, this method works on a headless server without running X11. I've taken the script from the mentioned link (except I put it in preexisting collection "Standard" instead of "DannysLibrary") and then I've ran this command from Windows machine using PuTTY, and X was shut down on remote machine, and DISPLAY variable was not set, and ... well, in any case, there's no way OOo could find X11 to connect to.

$ openoffice.org -invisible -headless "macro:///Standard.Conversion.ConvertWordToPDF(`pwd`/logaritamska.doc)"

This works and I'm sure this would work great for anyone who'd need conversion from another format into PDF, including production of printable reports from HTML. By editing the macro you could, perhaps, even get OOo to read directly from stdin or from your temporary service URL, and output into predefined file. The script on the link is quite simple once you have the elementary code to expand.

Summary:

  • generate reports as XLS or HTML
  • convert them
  • even though it's OOo, it works on headless machines

EDIT Jun 9 2009 I've tried to implement an online converter this way. You should make PHP run under the same user under which you created macros. This user apparently cannot be www-data. I've tried to use suphp, but for some reason it didn't change the user properly (posix_getuid() kept returning 33 which is www-data). I'll edit this once I fix this.

EDIT Jun 26 2009 Guess it took me a while to report back. Yes, this works with suphp. I'm however not in position to show it live, since the only server I have runs a relatively critical web app which didn't have professional security auditing. This means one of the things we depend on to protect the backend is that the user under which frontend runs is a very very unprivileged user (such as www-data). Don't ask :-)

Hope this helps someone: yes, converting into PDF with OO.o is quite realistic. There's even some remote calling support in OO.o but I didn't study that just for purposes of writing this.

like image 7
Ivan Vučica Avatar answered Oct 05 '22 03:10

Ivan Vučica