Probleme marge IE et objet COM

Probleme marge IE et objet COM - PHP - Programmation

Marsh Posté le 13-08-2007 à 14:39:08    

Salut à tous
 
Alors voilà j'ai 2 petits problèmes:
     - Le 1er pour l'intranet de mon entreprise je dois imprimer des étiquettes 60*30 en fonction de ce que saisira l'utilsateur. Donc pour afficher l'étiquette pas de problème mais quand je veux l'imprimer j'ai la marge d'internet explorer qui me décale toute l'etiquette et je n'en récupere que la moité. Donc il me faudrait une marge à 2 mm au lieu des 19.06 mm habituel? Je sais que dans Fichier/Mise en page on peut modifier les marges mais je veux le faire depuis mon script et non par la mise en page donc si quelqu'un a une idée???
     - Le 2ieme toujours pour les étiquettes j'ai essayé de faire le script avec les objets COM mais j'ai un problème quand j'essaie d'ouvrir le fichier cible. J'arrive bien a créer un nouveau fichier et y écrire dedans mais pas à en ouvrir un éxistant. voici mon script php:
 

Code :
  1. ini_set("com.allow_dcom","true" );
  2. $word = new COM("word.application" ) or die("Unable to instantiate Word" );
  3. if ($word == "Microsoft Word" )
  4. {
  5. print "$word";
  6. $template_file = "C:\Program Files\Apache Software Foundation\Apache2.2\htdocs\Etiquette_SO2_HCL\comtest.doc";
  7. print "$template_file";
  8. if(file_exists($template_file)){
  9.  print "Fichier existant";
  10.  $word->Visible = 1;
  11.             //$word->Documents->Add();
  12.  $word->Documents->Open($template_file);
  13.  $word->Selection->TypeText("ceci est ma première page Word" );
  14.  $new_file = "C:\Program Files\Apache Software Foundation\Apache2.2\htdocs\Etiquette_SO2_HCL\comtest.doc";
  15.  $word->Documents[1]->SaveAs($new_file);
  16. }
  17. else print "Fichier inexistant";
  18. }
  19. $word->Quit();
  20. $word = null;


 
Si quelq'un peut m'aider sur n'importe lequel des 2 problèmes  
Merci par avance

Reply

Marsh Posté le 13-08-2007 à 14:39:08   

Reply

Marsh Posté le 13-08-2007 à 14:41:08    

Tu veux ouvrir un fichier word existant sur le serveur avec Word ?

Reply

Marsh Posté le 13-08-2007 à 14:48:59    

Oui mais si tu as une autre solution je suis preneur.

Reply

Marsh Posté le 13-08-2007 à 14:56:01    

Je l'ai fait en javascript :  
http://www.phpfrance.com/irc/TheWa [...] ?wall=1264
 
par exemple

Reply

Marsh Posté le 14-08-2007 à 09:23:49    

Salut
 
Peux-tu m'expliquer comment fonctionne cette fonction car je ne connais rien au javascript. Sinon à quoi correspondent les portions php que tu as mis dans le code?
 
Merci

Reply

Marsh Posté le 14-08-2007 à 09:39:22    

J'ai écrit cette fonction dans un cadre professionnel.
le var oSH.... permet de créer un nouvel object ActiveX permettant de démarrer un programme sur le client.
OsH run dit de démarrer word. La portion de code à coté permet de définir l'emplacement du fichier à ouvrir.
enfin le window.location.replace permet au navigateur de changer de page vers celles définit.

Reply

Marsh Posté le 14-08-2007 à 10:23:38    

Apparemment c'est éxactement ce que je cherche mais j'ai une erreur (http 404) quand je passe par la fonction. Voici la fonction tel que je m'en sers:

Code :
  1. function runword(){
  2. var oSH = new ActiveXObject("WScript.Shell" );
  3. oSH.Run("winword.exe <?php echo "C:\comtest.doc"?>" );
  4. window.location.replace("C:\Program Files\Apache Software Foundation\Apache2.2\htdocs\Etiquette_SO2_HCL\Etiquette_SO2_HCL.php" );
  5. }


 
Si je désactive le Run j'arrive bien sur ma 2ieme page donc je pense que l'erreur est au niveau de la balise php est du echo mais je ne vois pas trop ce qui cloche.

Reply

Marsh Posté le 14-08-2007 à 10:26:55    

C'est tout a fait normal :
1) Est-ce que ton fichier C:\comtest.doc existe sur ton client ?  
Je pense pas vu que tu veux le télécharger, il faut que tu lui donnes son emplacement sur le serveur : http://serveur/comtest.doc
par exemple
2) Tu veux faire un location replace avec une adresse de type Windows, or c'est le meme principe tu dois passer par le serveur apache
donc window.location.replace("http://serveur/Etiquette_SO2_HCL.php" ) par exemple
 
Il faut savoir une chose : Le javascript est exécuté par le client alors que le code php est exécuté par le serveur. Cela fait une grosse différence.
Quand tu travailles en php tu dois te dire c'est le serveur qui travaille et si je travaille sur les fichiers ce sont les fichiers du serveur
En JS, c'est le client qui bosse et tu travailles sur le poste du client.


Message édité par antac le 14-08-2007 à 10:28:07
Reply

Marsh Posté le 14-08-2007 à 11:17:50    

Voilà j'ai fait ce que tu m'as indiqué mais j'ai toujours le même problème apprement le problème viendrait du Run je pense des guillements. Voilà comment je l'ai modifié:
 

Code :
  1. oSH.Run("winword.exe <?php echo "http:\pcwxp157\Etiquette_SO2_HCL\comtest.doc" ?>" );
  2. window.location.replace("http:\pcwxp157\Etiquette_SO2_HCL\Etiquette_SO2_HCL.php" );


 
Comme tu peux le voir dans le code le 'http:\pcwxp...' n'est pas en rouge alors que c'est un paramètre.

Reply

Marsh Posté le 14-08-2007 à 11:22:54    

dans ton cas écrit :  
oSH.Run("winword.exe http:\pcwxp157\Etiquette_SO2_HCL\comtest.doc" );
 
  window.location.replace("http:\pcwxp157\Etiquette_SO2_HCL\Etiquette_SO2_HCL.php" );

Reply

Marsh Posté le 14-08-2007 à 11:22:54   

Reply

Marsh Posté le 14-08-2007 à 14:11:05    

Ca y est ca marche...
Merci antac

Reply

Marsh Posté le 14-08-2007 à 14:15:40    

De rien

Reply

Marsh Posté le 06-06-2008 à 12:18:01    

Bonjour,  
je me permets de remonter ce sujet assez ancien mais j'ai un problème qui ressemble à celui exposé ici...
 
Voilà je dois donc ouvrir une application office(word, powerpoint, excel...) directement, ceci ne pose pas de soucis vu que la solution a été donnée plus haut, mais mon problème est que je ne connait pas le chemin de mon fichier à ouvrir car je dois le récupérer avec une fonction PHP de ce style :  
 

Code :
  1. foreach ($this->rows as $row) {
  2. ?>
  3. <li><?php echo $row->text; ?> <small><em></em></small><br>
  4. <a href="<?=$row->path_file; ?>"><img src=<?php echo $row->path_file; ?>></a>


 
J'ai pris le script javascript plus haut :  

Code :
  1. <SCRIPT ID=clientEventHandlersJS LANGUAGE=javascript>
  2. <!--
  3. function runword()
  4. {
  5. var oSH = new ActiveXObject("WScript.Shell" );
  6. oSH.Run("winword.exe" );
  7. }
  8. //-->  
  9. </script>
  10. <button id=button1 name=button1 onclick="javascript: runword()">TEST</button>

 
ce script fonctionne lorsque je connais le chemin (par exemple http://trucbidule.doc) mais je n'arrive pas à le faire fonctionner avec la fonction PHP, j'arrive à ouvrir word en fait öais pas le fichier qui doit apparaître dedans.
 
Si vous pouviez m'aider à réaliser ca s'il vous plait...
 
Et (accessoirement) j'aimerais pouvoir faire en sorte que excel s'ouvre si c'est un .xls, word pour un .doc etc... mais je ne sais pas du tout comment faire, je suis une vraie bille en PHP mais malheureusement dans mon stage on me demande de l'utiliser.
 
Merci d'avance à ceux qui pourront m'aider...
 
Tyra3l

Reply

Sujets relatifs:

Leave a Replay

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