web-dev-qa-db-fra.com

Quelque chose comme Crystal Reports pour PHP?

Je recherche quelque chose qui fonctionne dans PHP et qui est similaire aux rapports Crystal. En gros, j'ai besoin d'une configuration qui me permette d'imprimer des factures simplement en insérant les données, puis de les envoyer à une imprimante.

Le fichier le plus proche que j’ai trouvé jusqu’à présent est PDFB, mais c’est un peu pénible car il faut un positionnement précis. 

J'aimerais avoir quelque chose qui puisse générer une facture basée sur un modèle (de préférence basé sur XML) et la sortir ensuite sous une forme facile à imprimer (PostScript serait agréable!)

Il doit également prendre en charge les codes à barres (bien que ceux-ci puissent être générés sous forme d'image Gd)

Une autre exigence est que cela doit être FLOSS

31
Mez

Utilisez XML + XSL: FO avec Apache FOP via PHP-JavaBridge .

Voici comment: http://wiki.Apache.org/xmlgraphics-fop/HowTo/PHPJavaBridge

PostScript serait bien!

De nombreuses imprimantes PostScript comprennent également PDF.

12
vartec

J'ai utilisé Spreadsheet_Excel_Writer en PHP, et c'est assez bon. Pas WYSIWYG, mais cela génère des fichiers XSL, et j'en suis content. Ensuite, vous pourrez utiliser macro OpenOffice pour convertir le document au format PDF. Cela fonctionne en ligne de commande, ergo, cela fonctionne aussi avec les scripts PHP.

Ou voici un moyen encore meilleur.

Utilisez OpenOffice pour convertir un modèle Smarty. Smarty est un moteur de templates cool pour PHP, je le recommande à cet effet. Générez ensuite du code HTML pur en utilisant PHP avec Smarty. Enfin, convertissez simplement le code HTML généré en PDF en utilisant la méthode susmentionnée.

Reporting révolutionné (tm).

EDIT le 6 juin 2009 Modded down? Ah laisse tomber. 

Quoi qu'il en soit, cette méthode fonctionne sur un serveur sans tête sans exécuter X11. J'ai pris le script du lien mentionné (sauf que je l'ai mis dans la collection préexistante "Standard" au lieu de "DannysLibrary"), puis j'ai exécuté cette commande à partir de la machine Windows à l'aide de PuTTY, et X a été arrêté. sur la machine distante, la variable DISPLAY n’était pas définie et ... eh bien, dans tous les cas, il n’ya aucun moyen que OOo puisse trouver X11 auquel se connecter.

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

Cela fonctionne et je suis sûr que cela conviendrait parfaitement à quiconque aurait besoin de la conversion d'un autre format au format PDF, y compris la production de rapports imprimables à partir de HTML. En modifiant la macro, vous pourriez peut-être même obtenir que OOo lise directement à partir de stdin ou de l'URL de votre service temporaire et soit exporté dans un fichier prédéfini. Le script sur le link est assez simple une fois que vous avez le code élémentaire à développer.

Résumé:

  • générer des rapports au format XLS ou HTML
  • les convertir
  • même si c'est OOo, ça marche sur des machines sans tête

EDIT 9 juin 2009 J'ai essayé d'implémenter un convertisseur en ligne de cette façon. Vous devez exécuter PHP sous le même utilisateur que celui sous lequel vous avez créé les macros. Cet utilisateur ne peut apparemment pas être www-data. J'ai essayé d'utiliser suphp, mais pour une raison quelconque, cela n'a pas changé l'utilisateur correctement (posix_getuid() renvoyait 33, ce qui correspond à www-data). Je vais éditer ça une fois que je résoudrai ça.

EDIT 26 juin 2009 Je suppose qu'il m'a fallu un certain temps pour faire rapport. Oui, ça marche avec suphp. Je ne suis toutefois pas en mesure de le montrer en direct, car le seul serveur que je dispose exécute une application Web relativement critique qui ne comportait pas d'audit de sécurité professionnel. Cela signifie que l’une des choses sur lesquelles nous comptons pour protéger le back-end est que l’utilisateur sous lequel s’exécute le client est un utilisateur très très privilégié (tel que www-data). Ne demande pas :-)

J'espère que cela aidera quelqu'un: oui, la conversion en PDF avec OO.o est tout à fait réaliste. Il y a même du support téléphonique à distance dans OO.o, mais je ne l'ai pas étudié uniquement pour écrire.

7
Ivan Vučica

J'ai utilisé l'éclpse en php: "Projet BIRT"

http://www.Eclipse.org/birt/phoenix/

Vous concevez votre rapport dans Eclipse . Ensuite, téléchargez-le sur votre serveur (il doit exécuter Tomcat) Je sais . Vous pouvez ensuite appeler ce rapport à partir de votre application phpvous pouvez envoyer les paramètres au rapport à travers la chaîne de requête:

/myreport.birt?param=var&param2=var2

Nous avons une application de 4 ans qui fonctionne de la sorte jusqu’à présent . Environ 100 rapports et cela fonctionne vraiment bien.

Bien sûr, il est open source.

Bonne chance

6
elviejo79

Si vous avez un accès au serveur, vous pouvez également vous tourner vers Objets de mise en forme XSL à travers Apache FOP . XSL-FO est basé sur XML et supporte beaucoup de formats de sortie incluant PostScript et PDF

5
Martijn Laarman

Reportico

À mon avis, l’un des meilleurs concepteurs de rapports PHP est détaillé et riche en fonctionnalités.

4
Moamen Mostafa

Si vous parvenez à appeler une application Java dans votre environnement php (ce qui en général devrait être possible) JasperReports peut-être ce que vous recherchez:

4
Ansgar

Le bon outil pour ce besoin est XSL-FO, car il est parfait pour les supports imprimables . XSL-FO est aussi une recommandation du W3C, avec XSLT . langage de reporting, ce XLS-FO est le résultat de la fusion (traitement) du modèle de rapport XSLT avec vos données XML.

Vous créez le modèle automatiquement à l'aide de MS Word et exportez comme indiqué dans le manuel d'utilisation. Ensuite, vous alimentez le moteur de génération de rapports avec le modèle et, au moment de l'exécution, avec le fichier XML de données. 

Également au moment de l'exécution, le rapport XSL-FO résultant est restitué à:

a) le même XSL-FO (si vous voulez déboguer ou voulez juste un XSL-FO)

b) Un PDF parfait, (ApacheFOP rend le XSL-FO)

c) HTML avec une transformation XSLFO2HTML.

Ici vous avez le projet, c’est un plugin symfony 1.4: https://github.com/juanmf/sfPlugins/tree/master/reportPlugin

Je prévois de le découpler de SF. N'hésitez pas à demander quoi que ce soit. Voici comment: https://github.com/juanmf/sfPlugins/blob/master/reportPlugin/doc/HowToReport.pdf?raw=true

Ce message peut également vous aider: https://stackoverflow.com/questions/5519024/report-engine-solution-for-lamp-application/13042656

Cordialement!

1
juanmf

J'ai rencontré le même problème il y a environ un an. Après avoir cherché partout une solution existante, je n'en ai pas trouvé. J'ai donc rédigé un rapport Crystal en utilisant une bibliothèque de génération PDF de Zend Framework. J'ai dû adapter fortement leur bibliothèque pour prendre en charge les objets groupés, les sections répétitives et les modèles. Cela a fonctionné, mais c'était vraiment maladroit, et si je devais le refaire, je trouverais un moyen de relier php aux rapports de cristal, soit par un service Web comme Gushiken, ou en appelant une application en ligne de commande. CPAN a une interface Perl vers C.R .: Win32 :: OLE :: CrystalRuntime :: Application .

Si une solution PHP a été publiée au cours de l’année écoulée, je doute qu’elle soit suffisamment mature pour pouvoir être comparée à C.R. Ne perdez pas votre temps à vous attacher les cheveux, mais plutôt à ce qui fonctionne. Le temps est cher Le logiciel n'est pas.

1
Kyle Simek

hm .. j'ai eu le même problème avec mon projet actuel et j'ai fini par utiliser des rapports Crystal et appeler le rapport avec un service Web asp.net écrit en c # . le service Web n'a rien de complexe et vous pouvez toujours tout utiliser les caractéristiques des rapports de cristal . Je ne pense pas que vous trouverez un moteur de rapport entièrement basé sur php qui puisse être comparé à des rapports de cristal ... Je n'ai pas encore réussi à en trouver un ... 

1
SvenFinke

Essayez Tufat

Il m'est arrivé de voir que… peut-être que cela vous aidera… .. Cependant, il existe une version gratuite que vous pouvez tester.

Vous l'aimerez .. S'il vous plaît partagez votre copie.

0
Ratheesh R

j'ai utilisé phpreports , et je dois admettre que ce n'est pas mauvais pour les rapports Web, car ils supportent les en-têtes, les pieds de page, les groupes, les sous-totaux, etc.

0
blestab