[C#] ActiveX Adobe PDF Reader - Late Binding

Signaler
Messages postés
7
Date d'inscription
lundi 20 avril 2009
Statut
Membre
Dernière intervention
7 octobre 2005
-
Messages postés
7
Date d'inscription
lundi 20 avril 2009
Statut
Membre
Dernière intervention
7 octobre 2005
-
Bonjour,



J'ai un petit souci avec l'ActiveX d'Adobe Reader (Version 7).

J'ai une application qui charge des documents PDF à l'aide de l'ActiveX fourni par défaut par Acrobat Reader.

Je n'ai aucun souci lorsque je le fais en "early binding", c'est à dire lors du design time.



Cependant un problème est survenu, certains postes où j'installe mon
application n'ont pas la dernière version d'Adobe Reader, et j'aimerais
éviter de forcer l'installation du dernier Reader (surtout certains
systèmes d'exploitation comme Windows 2000 nécessitent l'installation
des service packs...assez lourd pour juste installer le reader...),
c'est pourquoi, j'aimerais lors de l'éxecution de mon application,
chargé l'activeX trouvé sur la machine en cours.



J'ai essayé de la manière suivante pour déjà charger un fichier:



Type objPDFType = Type.GetTypeFromProgID("AcroPDF.PDF");

object oPDF = Activator.CreateInstance(objPDFType);



System.Windows.Forms.Control oPdfActiveX = (System.Windows.Forms.Control)oPDF;

this.Controls.Add(oPdfActiveX);



System.Reflection.MethodInfo oMethodInfo = objPDFType.GetMethod("LoadFile");

if(oMethodInfo!= null)

{

object[] parameters = new object[1];

parameters[0] = myFile;

oMethodInfo.Invokeo(PDF , parameters);

}





1. L'objet COM crée n'est pas le control ActiveX du Reader donc la 4ème
ligne du code ne va pas fonctionner (mauvais cast, mais l'idée est
là...)

2. Les seules méthodes disponibles sont:

CreateObjRef

InitializeLifetimeService

GetLifetimeService

GetHashCode

Equals

ToString

GetType

3. Je ne suis pas sûr du ProgId -> AcroPDF.PDF



Si quelqu'un peut m'éclairer, merci d'avance !



Bonne fin de journée!

2 réponses

Messages postés
2368
Date d'inscription
mardi 17 avril 2001
Statut
Modérateur
Dernière intervention
26 décembre 2007
20
Je crois que c'est plutôt "AcroExch.App"

::|The S@ib|::
MVP C#.NET
Messages postés
7
Date d'inscription
lundi 20 avril 2009
Statut
Membre
Dernière intervention
7 octobre 2005

Mmm... j'ai déjà essayé "AcroExch.App", et ça ne marche pas...

en effet, lorsque je fais :

Type objPDFType = Type.GetTypeFromProgID("AcroExch.App");



objPDFType est null...., alors que avec "AcroPDF.PDF" comme ProgId, il me retourne un "System.__ComObject"...



Merci pour toute autre(s) idée(s)...



Bonne soirée !