Piloter Word depuis une page aspx qui se trouve sur un server
Max207
Messages postés19Date d'inscriptionvendredi 23 juillet 2004StatutMembreDernière intervention17 octobre 2008
-
23 sept. 2008 à 13:23
Max207
Messages postés19Date d'inscriptionvendredi 23 juillet 2004StatutMembreDernière intervention17 octobre 2008
-
25 sept. 2008 à 08:47
Bonjour à tous,
On m'a confié un projet à mon boulot qui est une migration d'une application existante (VB) en application ASP.NET&C# sur un server (windows 2003).
L'application existante était sous forme d'exécutable qui était installée chez les machines clientes de la boite. L'application permettait, entre autre, de jouer avec Word (ouvrir un document et l'imprimer ou l'imprimer page par page en sélectionnant divers imprimantes pour créer des pdf et des fichier TIFF) tout cela de façon transparente (Word Visible=False).
En C#, je sais comment piloter Word et effectuer les opérations que j'ai décrite plus haut. Cela fonctionne bien mais pour l'instant je travaille sur ma machine locale. J'ai donc une page qui va ouvrir Word ou imprimer un document Word en le pilotant (file>print>etc) à partir d'un clic sur un bouton de ma page. Cependant, j'ai placé mon projet sur le server et là, ça ne fonctionne plus.
Premièrement j'ai ce message d'erreur lorsque je veux utiliser l'objet Word:
System.Runtime.InteropServices.COMException (0x80040154): Retrieving the COM
class factory for component with CLSID {000209FF-0000-0000-C000-000000000046}
failed due to the following error: 80040154
Ce qui me fait dire que le package COM de Word (qui permet de faire référence à celui-ci) n'est pas installé sur le server bien que m'a DLL soit référencée et intégrée dans mon projet mais ça ne fonctionne pas. Il va sans doute falloir commander une licence Office à mettre sur le server pour mon projet. Mon raisonnement vous parait-il plausible? Car je suis totalement novice sur ce coup là.
Ma principale question est celle-ci:
Lorsqu'on lance Word à partir d'une page aspx qui se trouve sur un server, est-ce le Word de la machine cliente qui s'exécute ou bien le Word se trouvant sur le server?
yassinebennani
Messages postés249Date d'inscriptionsamedi 13 octobre 2007StatutMembreDernière intervention 2 mai 2014 23 sept. 2008 à 19:50
Bonjour
la réponse à ta question est "Sur serveur" le word est exécuté sur serveur puisque la dll qui est référencée est aussi sur serveur je pense que t'a tombé dans ce qu'on appel à l'époque l'enfer des DLLs puisque je vois que tu utilise les COMs donc tu dois faire attention à l'intéroperabilité de ton application et au déplacement des dlls car cela crée des conflits bizzard renseigne toi sur ça.
Les fins justifient les moyens_________________________________________________
Yassine BENNANI - Ingénieur en génie logiciel & multimédia (Consultant SI)
Max207
Messages postés19Date d'inscriptionvendredi 23 juillet 2004StatutMembreDernière intervention17 octobre 2008 25 sept. 2008 à 08:47
J'y vois un peu plus claire maintenant. Après avoir fait le tour de différents articles sur le sujet, il s'avère qu'au final cette méthode de procéder est fort peu conseillée. Seulement dans mon cas, j'ai un réel besoin de piloter Word afin de passer des impressions. Utiliser les COM de l'Office sur le server c'est vraiment pas l'idéal. Je suis donc à la recherche d'une autre solution qui implique l'ouverture du Word et la machine cliente, le souci reste que cela doit être déclenché a partir d'une WebApplication sur le serveur ...
J'ai eu une idée mais elle n'est pas réalisable question sécurité: Je voulais placer sur les machines clientes une petit executable de ma création qui aurait pour but de piloter et d'imprimer les doc Word. Cet exécutable serait lancé depuis le Website mais le problème est qu'il n'est pas possible, apparament, de lancer un exe localisé sur une machine cliente depuis un Website (ce qui est normal).
J'ai maintenant une seconde idée: Lancer un exécutable depuis le Website (qui se trouve sur le server), cet exécutable se trouvera également sur le server et il sera utilisé en tant que "pont" vers l'exécutable localisé sur la machine qui lui sera chargé de piloter Word. Est-ce que cette solution vous paraît viable?