PHP : générer un fichier PDF côté serveur et l'imprimer côté client

PHP : générer un fichier PDF côté serveur et l'imprimer côté client - PHP - Programmation

Marsh Posté le 03-04-2008 à 20:17:38    

Bonsoir à tous et à toutes,  
 
Je viens ici pour me renseigner sur un casse tête.
 
Voilà j'ai une page list_pdf.php qui parcourt un dossier et en affiche le contenu (un ensemble de fichiers PDF).
Il est ici possible de cocher des fichiers afin de les concaténer en un seul et même fichier.  
 
Je récupère le nombre de fichiers cochés, leurs noms via POST et tout se passe bien.
Je génère ma ligne de commande pour lancer pdftk qui se trouve sur le serveur. Après avoir lancer tout cela, j'obtiens un fichier PDF, concat.pdf, résultat de la concaténation des fichiers PDF précédemment sélectionnés par l'utilisateur.
 
J'aimerai à présent que cet utilisateur puisse imprimer ce fichier et tout cela de manière quasiment transparente. En gros il coche les fichiers à imprimer, Pdftk concatène tout ça dans un seul et même fichier qui est stocké sur le serveur et enfin une boite de dialogue d'impression s'ouvre côté client pour imprimer concat.pdf.
 
J'ai utilisé ce code :
 

Code :
  1. $res=shell_exec("start acrord32.exe /p "chemin/concat.pdf"" );


Cela fonctionne parfaitement, sauf que c'est la machine serveur qui voit la boîte de dialogue s'ouvrir et non le client qui est à l'origine de la requête.  
Quelqu'un voit-il une solution ? Je suis pas loin mais ça s'ouvre pas au bon endroit.  
 
Merci à vous.

Reply

Marsh Posté le 03-04-2008 à 20:17:38   

Reply

Marsh Posté le 03-04-2008 à 22:57:09    

tu ne pourras pas imprimer sur le client. Au mieux, tu peux lui donner ton fichier, et iul se débrouille pour l'imprimer...


---------------
Can't buy what I want because it's free -
Reply

Marsh Posté le 03-04-2008 à 23:11:41    

En fait je ne souhaite pas vraiment imprimer (dans le sens commander l'imprimante, le nombre de copies etc...), mais juste "ouvrir" le fichier généré sur le poste client, enfin ouvrir la boîte de dialogue qui gère l'impression de ce fichier. En somme c'est un peu comme si on ouvrait ce fichier chez le client depuis le serveur.
C'est vraiment impossible ? J'ai lu des sujets qui disaient le contraire, mais ne présentaient aucune solution technique (code).

Reply

Marsh Posté le 03-04-2008 à 23:14:20    

is'il ne s'agit que d'envoyer le fichier au client pour qu'il l'ouvre (si le navigateur est configuré pour), il suffit d'une combinaison simple de header() et readfile() pour résoudre ton problème.


---------------
Can't buy what I want because it's free -
Reply

Marsh Posté le 04-04-2008 à 01:08:05    

il faut savoir que pour ouvrir la fenetre d'impression (automatiquement) quand le client ouvre le fichier en question n'est faisable qu'en javascript, donc tout a fait possible avec une page html, or toi tu lui balances un pdf donc pas de JS et donc impossible d'ouvrir la fenete en question (a ma connaissance en tout cas :))

Reply

Marsh Posté le 04-04-2008 à 10:06:33    

Merci pour vos réponses.
 
Si je suis bien, il est donc possible pour le client d'appeler le fichier via JS donc une fosi que ce dernier est généré sur le serveur ?  
 
Comment cela peut-il se faire automatiquement, c'est à dire sans que le client ait à cliquer quelque part.  
Est que par hasard un redirection auto via header vers une nouvelle page qui contient un <body onload='fonction impression'> pourrait fonctionner ?
 
Si oui quel genre de fonction dois je utiliser pour ouvrir la boite de dialogue d'impression sans forcément ouvrir le fichier ?

Reply

Marsh Posté le 06-04-2008 à 08:08:40    

tu renvoies le resultat de la concaténation en précisant bien dans l'entete que le document de retour est du pdf. Si acrobat est installer sur le client celui ci devrait s'ouvrir et il pourra imprimer. Si le message au moment de la sélection est bien clair c'est a dire sélectionner vos fichier pour imprimer. Le client en recevant le doc comprendra qu'il ne lui restera plus qu'à cliquer sur imprimer.

Reply

Marsh Posté le 06-04-2008 à 15:55:34    

Il existe un ActiveX qui ferait cela. Voir http://www.vbgold.com/advanced-pdf [...] index.html
 
Cela pourrait être une solution dans le cadre d'un intranet, ou d'un internet d'une communauté qui peut avoir confiance dans certains ActiveX. Les ActiveX peuvent être utilisés dans des pages HTML à condition que l'utilisateur soit d'accord.
Je n'ai pas testé ce software, mais il semble prometteur.

Reply

Marsh Posté le 09-04-2008 à 11:27:30    

Ca a l'air pas mal et c'est exactement ce que je cherche. Cependant, mais je peux me tromper, ça ne pourra marcher que sur IE non ?

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed