Précédent   Forum des professionnels en informatique > PHP > Outils
Outils Forum d'entraide sur les outils pour développeurs PHP : EDI, installation, administration... Avant de poster : FAQ outils, toutes les FAQ PHP et les comparatifs
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 12/05/2008, 15h11   #1
Invité de passage
 
Inscription : mai 2008
Messages : 12
Détails du profil
Informations forums :
Inscription : mai 2008
Messages : 12
Points : 3
Points : 3
Par défaut Afficher un état crystal report en PDF avec PHP

Bonjour a tous

j'ai conçu un état sous crystal report , j'utilise comme langage le PHP et Apache comme serveur web, j'arrive à exporter le document l'enregistrement sur disque dur, avec la méthode : $rpt_obj->Export(True);
j'arrive à le sortir directement sur imprimante, avec la fonction : $rpt_obj->PrintOut();

je veux savoir si je peut exporter l'etat directement en pdf et l'afficher , et es que je peut ouvrir l'etat dans ma page php ?

voila , j'espère trouver une solution dans ce forum. merci et bonne journnée a tous.
sabrina07 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 16/05/2008, 15h26   #2
En attente de confirmation mail
 
Inscription : octobre 2002
Messages : 347
Détails du profil
Informations forums :
Inscription : octobre 2002
Messages : 347
Points : 94
Points : 94
bonjour,

es-tu en train de dire que tu as réussir à concevoir un état avec Crystal Reports (quelle version d'ailleurs), que tu l'as enregistrer et mis en ligne et que tu peux le vor via un site web ?

je pensais que Crystal Reports avait abandonné le PHP au profit du .net ...
Ekimasu est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 17/05/2008, 15h52   #3
Invité de passage
 
Inscription : mai 2008
Messages : 12
Détails du profil
Informations forums :
Inscription : mai 2008
Messages : 12
Points : 3
Points : 3
Bonjour USA Mike,

je voulais dire que j'ai conçu un état en crystal reports j'ai reussit à l'aide de la fonction COM d'imprimer le rapport et aussi de l'enregistrer sur le disk mais sans afficher mon rapport.

ce que je cherche maintenant c'est es possible d'afficher un etat dans une page web avec php ? ou es possible d'afficher l'etat en pdf a partir d'un code php toujours.?

j'espère que c'est un peu claire, tu a dis que crystal a abondoné php pour .Net peut tu me donner plus de précisions sur ça.

merci et bonne journnée .
sabrina07 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/07/2008, 10h26   #4
Invité de passage
 
Inscription : mai 2008
Messages : 12
Détails du profil
Informations forums :
Inscription : mai 2008
Messages : 12
Points : 3
Points : 3
Bonjour a tous,

voila je voulez vous transmettre ce qui a été trouvé pour régler mon problème.
le principe est de créer un etat en crystal reports , on l'enregistre puis on fait un passage de paramètre du php a crystal. enfin on creer le fichier pdf a partie de cet etat et on l'ouvre dans la page web.

1. Ouverture du rapport

Code :
1
2
3
$app_obj = new COM("CrystalRuntime.Application") or Die ("Did not open");
$etat="C:\...\nomEtat.rpt"; // donner le chemain du rapport
$rpt_obj=$app_obj->OpenReport($etat);
2. passage des paramètres

Code :
$rpt_obj->RecordSelectionFormula = "{nom_table.nom_du_champ1} =$varnum and {nom_table.nom_du_champ2}="."'". $var_string."'"....;
3. Generer le fichier en pdf

Code :
1
2
3
4
5
6
$rpt_obj->ExportOptions->DiskFileName="C:\...\nomFichier.pdf"; // chemain ou mettre le fichier pdf
$rpt_obj->ExportOptions->PDFExportAllPages=true;
$rpt_obj->ExportOptions->DestinationType=1; // Export to File
$rpt_obj->ExportOptions->FormatType=31; // Type: PDF
$rpt_obj->Export(false);
$my_pdf="C:\...\nomFichier.pdf";
3. ouverture du fichier pdf

Code :
1
2
3
4
5
6
7
8
9
10
11
12
header('Content-type: application/pdf');
header('Content-Length: $len');
//header('Content-Disposition: inline; filename="'.$my_pdf.'"');
header('Last-Modified: '.gmdate('D, d M Y H:i:s') . ' GMT');
header('Cache-Control: no-store, no-cache, must-revalidate');
header('Cache-Control: pre-check=0, post-check=0, max-age=0');
header('Pragma: anytextexeptno-cache', true);
header('Cache-control: private');
header('Expires: 0');
header('Content-Disposition: inline; filename="'.$my_pdf.'"');
 
readfile($my_pdf);
ce code marche tres bien sur fire fox(je l'est testé) mais il y a un problème sur internet explorer. le ficher pdf ne s'affiche pas sur la page internet explorer ???!!! c'est comme si il n'arrive pas a lancer acrobat redaer .
j'ai essayer de voir si dans acrobat reader l'option "display pdf in browser" elle est cochée ??!!!

alors si une personne a une explication sur ça j'aimerai bien la connaitre .

autre chose j'aimerai savoir comment faire un data grid en php ?

bonne journée a tous.
sabrina07 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 11/07/2008, 17h00   #5
En attente de confirmation mail
 
Inscription : octobre 2002
Messages : 347
Détails du profil
Informations forums :
Inscription : octobre 2002
Messages : 347
Points : 94
Points : 94
Par défaut ok

bonjour,

Merci de ta réponse détaillée Sabrina ! c'est clair et rare.
J'avais entendu parlé ya longtemps de cette solution en utilisant les objets COM comme tu fais
Citation:
$app_obj = new COM("CrystalRuntime.Application") or Die ("Did not open");
.

C'estle même principe que de réaliser un document avec Word, d'attaché de variable dedans pour le publipostage et de le faire ouvrir via ce procédé. Dans ce cas on peut que Word est aussi un outil dereporting :-)

Par contre si je ne me trompe pas, ta soluition ne fonctionnera si le visiteur est sous Linux ou Mac. Car l'appel a COM est dédié à un nivaguateur fonctionnant sous windows (IE, FF, Opera). Je peux me tromper...
En plus, peut-être qu'il faut avoir Crystal Report sur sa machine pour que ça fonctionne bien. as-tu essayé à partir de d'un poste où Crystal Reports n'est pas installé ?

Pour ton problème sous IE je pense que ça marche pas à cause d'un truc de sécurité. Fouille dans les paramétres avancés (menu outils/option internet/onglet avancés) ou dans la gestions des plugins (outils/gérer les modules complémentaires).

bonne continuation
Ekimasu est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 12/07/2008, 13h02   #6
Invité de passage
 
Inscription : mai 2008
Messages : 12
Détails du profil
Informations forums :
Inscription : mai 2008
Messages : 12
Points : 3
Points : 3
Bonjour ,

Merci pour ta réponse USA Mike, d'après ce que j'a lu sur ce lien http://www.php.net/manual/fr/intro.com.php je pense que tu a raison en disant que ça ne marchera pas peut etre pas sur des machine linux ou MAC... J'aimerais bien savoir quelle est la solution dans ce cas là ? encore une recherche .....

pour ce qui est de crystal , ce n'est pas nécessaire de l'installer dans le poste client , j'ai testé ça.

enfin il me reste toujours le problème de l'IE et du datagrid.......

bonne journée.
sabrina07 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 24/07/2009, 18h47   #7
Invité de passage
 
Inscription : juillet 2009
Messages : 1
Détails du profil
Informations forums :
Inscription : juillet 2009
Messages : 1
Points : 1
Points : 1
Par défaut Résolution de l'affichage du pdf sur IE

Pour tous ceux qui ont lu ce sujet et ne savent tjrs pas cmt afficher le pdf sour Internet Explorer, c'est simple.

Placer les headers en début du code php.

Pour ceux qui seront ennuyés par le fait qu'il en existe dans le code de Sabrina qui font appel à la variable $my_pdf, Sachez que vous pouvez omettre ces headers (du moins ça a marché chez moi)

Et vous laissez juste la fonction readfile($my_pdf) en fin de fichier.

Et voilà vous pouvez consulter vos états générés en format pdf, sous Internet Explorer également.
juannito est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 04/02/2010, 10h47   #8
Nouveau Membre du Club
 
Inscription : mai 2008
Messages : 72
Détails du profil
Informations forums :
Inscription : mai 2008
Messages : 72
Points : 34
Points : 34
Par défaut je vous donne la solution

voila le code qui marchera sans posé de probleme sur IE
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
 
 
?php
//Ouverture du rapport
#######################################
//merci futurist LOL
#########################################
//pour mis a jour de la base depuis crystal report
//il faut mettre cela
$db = 'intranet'; //nom de la base de données
$host = 'localhost'; // nom de la machine hôte
$user = 'root'; // nom de l'utilisateur
$pwd = '';// mot de passe
 
$dsn = "mysql:dbname=$db;host=$host";
$app_obj = new PDO($dsn, $user, $pwd);
##################################
 
$app_obj = new COM("CrystalRuntime.Application") or Die ("Did not open");
$etat="C:\\wamp\\www\\requete\\utilisateur.rpt"; // donner le chemain du rapport
$rpt_obj=$app_obj->OpenReport($etat);
 
 
$rpt_obj->RecordSelectionFormula = "{nom_table.nom_du_champ1} =$varnum and {nom_table.nom_du_champ2}="."'". $var_string."'"....;
 
 
 
$rpt_obj->ExportOptions->DiskFileName="C:\\wamp\\www\\requete\\nomFichier.pdf"; // chemain ou mettre le fichier pdf
$rpt_obj->ExportOptions->PDFExportAllPages=true;
$rpt_obj->ExportOptions->DestinationType=1; // Export to File
$rpt_obj->ExportOptions->FormatType=31; // Type: PDF
$rpt_obj->Export(false);
 
?>
 
 
<?php /*
header('Location:\requete\pdf.html');
exit();*/
 
// la fonction de redirection ------------ 
function redir($url){ 
echo "<script language=\"javascript\">"; 
echo "window.location='$url';"; 
//echo "window.open('$url','menuchd','toolbar=1, location=1, directories=0, status=0, scrollbars=1, resizable=1, copyhistory=0, menuBar=1, width=700, height=600, left=200, top=50');"; 
 
 
 
echo "</script>"; 
} 
// Utiliser la redirection --------------- 
redir("requete/\pdf2.html"); 
 
?>
et dans la psge pdf2.html vous mettez
Code :
1
2
3
4
5
6
7
8
9
10
11
12
 
 
<html>
<body>
 
<META HTTP-EQUIV="Refresh" CONTENT="0;URL= http://localhost/requete/nomFichier.pdf"> 
 
 
 
 
</body>
</html>
en fin trouvé lol
futurist est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 06/05/2011, 09h11   #9
Invité régulier
 
Inscription : mars 2011
Messages : 38
Détails du profil
Informations forums :
Inscription : mars 2011
Messages : 38
Points : 6
Points : 6
Bonjour,

J'utilise Crystalreport dans PHP et mon problème est exactement en rapport avec le sujet de cette discussion alors je me permets de poster à la suite.

Je souhaite afficher et imprimer des rapports en PDF dans une page web via PHP en utilisant Crystal report. Exactement comme dans l'exemple plus haut, je travaille sous ORACLE en SQL et j'utilise WAMp pour créer une interface PHP utilisateur à manier à interagir de simplement avec la BDD. Mais je rencontre une erreur PHP avec l'ouverture des rapports qui me bloque dans mon développement

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
 
set_time_limit(0);
//Récupération du chemin de la page php en cours
$path=$_SERVER['SCRIPT_FILENAME'];
//echo $path;
//echo '<br/>';
//Transformation du chemin pour accéder au rapport
$rpt=str_replace("Crystal.php", "Rapports/".$_GET['rap'].".rpt", $path);
com_load_typelib("objectfactory.dll");
$ObjectFactory= New COM("CrystalReports12.ObjectFactory.1");
$crapp = $ObjectFactory->CreateObject("CrystalRunTime.Application");
$creport = $crapp->OpenReport($rpt, 1);// on ouvre le rapport
if ($creport->Database->Tables->Count>0)
{//s'il contient des tables
		$creport->Database->Tables->Item(1)->ConnectionProperties['User ID'] =  $_SESSION['login'];//on met les infos de connection
		$creport->Database->Tables->Item(1)->ConnectionProperties['Password'] = $_SESSION['pass'];
}
if (trim($param)!="" && $creport->Database->Tables->Count>0)
{//si on a une formule de selection d'enregistrements pour le rapport on l'insère dans le rapport
	$creport->FormulaSyntax = 0;
	if (trim($creport->RecordSelectionFormula)!="")
    {//si le rapport contient déja une formule on insère notre formule à la suite
		$creport->RecordSelectionFormula=$creport->RecordSelectionFormula." and ".$param;
	}
Dans mon appli PHP quand je demande un raport sous crystal report j'obtient le code erreure suivant :
Citation:
Fatal error: Uncaught exception 'com_exception' with message '<b>Source:</b> Unknown<br/><b>Description:</b> Unknown' in C:\wamp\www\CG92\Crystal.php:39 Stack trace: #0 C:\wamp\www\CG92\Crystal.php(39): com->CreateObject('CrystalRunTime....') #1 {main} thrown in C:\wamp\www\CG92\Crystal.php on line 39
Je ne comprend pas le problème, quand je lance directement les '.rpt' dans l'explorateur il se lance correctement avec crystal report. sa fait 3jours que je trouve pas la solution

EDIT: la ligne 39 du code erreurs correspond a la ligne 11 dans l'extrait de code
Merci
Farow est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 03/06/2011, 10h06   #10
Invité de passage
 
Homme
Inscription : juin 2011
Messages : 1
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations forums :
Inscription : juin 2011
Messages : 1
Points : 1
Points : 1
Bonjour,

J'utilise Crystal Reports XI R2, et je souhaite, comme la plupart d'entre vous, afficher et imprimer des états CR en PDF via PHP.

J'arrive à générer des rapports en PDF, seulement j'ai un problème concernant le passage de paramètres : comment passer une date (au format YYYY/MM/JJ) en paramètre ?

Voici une partie de mon script :
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
<?php
 
// Création de l'objet Crystal 
$o_CrObjectFactory = new COM('CrystalReports115.ObjectFactory.1');
$o_CrApplication = $o_CrObjectFactory->CreateObject("CrystalRunTime.Application");
com_load_typelib('CrystalDesignRunTime.Application');
 
// Chargement du rapport
$o_CrReport = $o_CrApplication->OpenReport('C:\IntranetDev\usr\Intranet\Admin\Commande.rpt', 1);
 
// Passage de paramètres au rapport
try
{
	/*
	$DDB = date('Y-n-d', mktime(0, 0, 0, 5, 18, 2011));
	$DFN = date('Y-n-d', mktime(0, 0, 0, 5, 26, 2011));
	*/
 
	$DDB = '2011-5-16';
	$DFN = '2011-5-26';
 
	$o_CrReport->EnableParameterPrompting = 0;
	$o_CrReport->ParameterFields(1)->AddCurrentValue($DDB);
	$o_CrReport->ParameterFields(2)->AddCurrentValue($DFN);
 
	echo "Parameters... done<br />";	
}
catch(Exception $e)
{
	echo 'Parameters error : '.$e->getMessage().'<br />';
        echo 'N° : '.$e->getCode().'<br />';
}
 
//  Sélection
try
{									
	$o_CrReport->RecordSelectionFormula = "({Moyen.S17LIB} = 'ATR47'  
OR {Moyen.S17LIB} = 'CRJ27' OR {Moyen.S17LIB} = 'CRJ71' 
OR {Moyen.S17LIB} = 'ATR47' OR {Moyen.S17LIB} = 'FTD27-1' 
OR {Moyen.S17LIB} = 'FTD27-2') 
AND DATE({Liste_cour_salle.S31DTE}) >= DateValue('".$DDB."') 
AND DATE({Liste_cour_salle.S31DTE}) <= DateValue('".$DFN."')";
}
catch(Exception $e)
{
	echo 'Selection formula error : '.$e->getMessage().'<br />';
        echo 'N° : '.$e->getCode().'<br />';
}
Lors de l'exécution du code, j'obtiens une erreur à la ligne 23 :
Citation:
Parameters error : Source: Unknown
Description: Unknown
N° : -2147352567
Avez-vous une idée de la syntaxe à utiliser ? J'ai également ce problème de paramètre lorsque la valeur du paramètre se situe dans une liste déroulante.

Autre question : comment récupérer la valeur de ces paramètres une fois qu'ils ont été renseignés ?

Merci d'avance pour vos réponse !

en3rgizR
en3rgizR est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 16h30.


 
 
 
 
Partenaires

Hébergement Web