Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1214 connectés 

  FORUM HardWare.fr
  Programmation
  PHP

  Catcher les erreurs VBA en PHP

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Catcher les erreurs VBA en PHP

n°2035176
antac
..
Posté le 10-11-2010 à 11:16:18  profilanswer
 

Bonjour,
 
Je suis en train de développer un système de conversion en PDF de documents Word en PHP. Cela marche assez bien.
Cependant certains documents peuvent être buggés et plante l'instance de word en charge de la conversion sur le serveur (par exemple si un tableau dans le document est endommagé).
 
Directement en VBA j'arrive à éviter la majorité des plantages en mettant un bête et méchante "ON ERROR RESUME NEXT", c'est moche, c'est pas bien mais la gestion des erreurs en VBA étant ce qu'elle est j'ai pas trop le choix.
 
En général les plantages à cause d'un document défectueux se passe au moment de l'ouverture du fichier. Je voudrais donc en amont pouvoir forcer l'ouverture en attrapant l'erreur VBA coté PHP. Mais là je sèche un peu.
 
Voici le code en VBS qui fonctionne

Code :
  1. Dim WordApp,doc
  2. Set WordApp = CreateObject("Word.Application" )     '-- ouvre une session Word
  3. ON ERROR RESUME NEXT
  4. WordApp.Visible = True
  5. WordApp.Documents.Open("C:\Documents and Settings\Antoine\Bureau\LETTRE MOTI.doc" )
  6. Set doc = WordApp.ActiveDocument
  7. doc.ExportAsFixedFormat "C:\Documents and Settings\Antoine\Bureau\test.pdf",17
  8. WordApp.Quit


 
Voici le code PHP qui pose problème sur quelques rares documents car il n'y a pas de gestion d'erreur VBS (je précise qu'un try catch coté php ne permettra pas de convertir le fichier alors que souvent il s'agit d'un simple warning qui ne pose aucunement problème.
 

Code :
  1. $appliOLE = new COM("word.application" ) or die("WORD ne se connecte pas" );
  2.      $appliOLE->Visible = 0;
  3.     $appliOLE->Documents->Open( $fichierPathTmp ); //warning non catché à l'ouverture (et aucun retour en php)    
  4.     $appliOLE->Documents[1]->ExportAsFixedFormat( $fichierPathPDF , 17);  // Impossible de sauvegarder ou de faire quoi que ce soit sur le document si warning à l'ouverture
  5.     $appliOLE->Quit();


 
Avez vous une idée ?

mood
Publicité
Posté le 10-11-2010 à 11:16:18  profilanswer
 

n°2035190
olivthill
Posté le 10-11-2010 à 11:56:44  profilanswer
 

Peut-être ceci :

Code :
  1. $err = $appliOLE->Documents->Open( $fichierPathTmp ) or echo("Warning pas grave" );


 
Edit :
Autre piste, il faudrait arriver à faire, avec OLE, la commande

DoCmd.SetWarnings False

Peut-être avec quelque chose comme:

$appliOLE->Documents->DoCmd.SetWarnings False


Message édité par olivthill le 10-11-2010 à 12:00:45
n°2035224
antac
..
Posté le 10-11-2010 à 12:52:07  profilanswer
 

DoCmd, je crois que ça fonctionne qu'avec Access

Code :
  1. $err = $appliOLE->Documents->Open( $fichierPathTmp ) or echo("Warning pas grave" );

ne change rien
 
J'ai trouvé une solution temporaire mais ça ne me plait pas...Je trouve que c'est un bricolage immonde. (Enfin, j'ai pour l'instant pas le choix)

Code :
  1. $oScript = new COM("MSScriptControl.ScriptControl" );
  2. $oScript->Language = "VBScript";
  3. $oScript->AllowUI = false;
  4. $oScript->AddCode('Sub Convert()
  5. Dim WordApp,doc
  6. Dim comp, components
  7. Set WordApp = CreateObject("Word.Application" )   
  8. ON ERROR RESUME NEXT
  9. WordApp.Visible = False
  10. WordApp.Documents.Open("'.$fichierPathTmp.'" )
  11. WordApp.Dialogs.Application.Visible = False
  12. Set doc = WordApp.ActiveDocument
  13. doc.ExportAsFixedFormat "'.$fichierPathPDF.'",17
  14. WordApp.Quit
  15. End Sub ');
  16. $oScript->Run("Convert" );


Message édité par antac le 10-11-2010 à 12:59:21

Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  PHP

  Catcher les erreurs VBA en PHP

 

Sujets relatifs
[VBA] Déclaration automatique de tableaux[VBA/LOTUS]: écrire mail avec fichier attaché + JPEG intégré au corps
Revenir en arriere doc word avec VBAProblème PHP / Cron serveur / useradd
Problème PHP / Cron serveur / useradd[VBA] Dimension d'une image
Mise a Jour Via PHP de DynDNS.comPHP et AJAX Probleme pour renvoyer une valeur
[VBA] If/then débutant[VBA] extraire des noeuds d'un gros fichier XML
Plus de sujets relatifs à : Catcher les erreurs VBA en PHP


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR