IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

API, COM et SDKs Delphi Discussion :

ActiveX Acrobat AcroPDF XE5(32b) W7(64b)


Sujet :

API, COM et SDKs Delphi

  1. #1
    Membre actif
    Avatar de Eric.H
    Homme Profil pro
    Inscrit en
    Décembre 2004
    Messages
    220
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations forums :
    Inscription : Décembre 2004
    Messages : 220
    Points : 286
    Points
    286
    Par défaut ActiveX Acrobat AcroPDF XE5(32b) W7(64b)
    Bonjour

    Depuis qq années on utilise l'activeX d'Acrobat Reader pour afficher les PDF, ceci sans problème jusque version 11.0.06.
    Depuis la dernière mise a jour d'adobe en version 11.0.07 cela ne fonctionne plus.
    L'erreur étant une "access violation..."

    J'ai donc réimporté l'active X AcroPDF.dll... et cela explose des que l'on met le compo sur une form ou que l'on fasse un .create...

    J'ai cherché ici, sur net et edn...rien trouvé de concluant.
    Là je débug les sources delphi... si qq'un a une idée....

    [Edit : forums Adobe : cela touche également, au minimum, delphi 2007 et VB6]

  2. #2
    Expert confirmé
    Avatar de Ph. B.
    Homme Profil pro
    Freelance
    Inscrit en
    Avril 2002
    Messages
    1 784
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 57
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Freelance
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2002
    Messages : 1 784
    Points : 5 915
    Points
    5 915
    Par défaut
    Citation Envoyé par Eric.H Voir le message
    Depuis qq années on utilise l'activeX d'Acrobat Reader pour afficher les PDF
    S'il s'agit d'un simple affichage, il est possible de se reporter à cette suggestion que j'ai proposée récemment : Problème avec ActiveX Acrobat et Delphi XE 5.0

    Citation Envoyé par Eric.H Voir le message
    [Edit : forums Adobe : cela touche également, au minimum, delphi 2007 et VB6]
    Cependant, si j'en crois cette discussion sur les forums Adobe, il faudrait sélectionner la bonne dll (32 ou 64 bits), ce que ne sauraient pas faire certains EDI qui prennent la 1° dll trouvée...

    Toutefois, un intervenant a donné la solution suivante qui semble fonctionnelle (à vérifier) :

    1. Copier oleCtrls.pas en oleCtrlsAdobe.pas
    2. Dans le fichier copié, retirer de la classe TOleControl :
      • IServiceProvider
      • function QueryService(...): HResult; stdcall;
      • function TOleControl.QueryService(..): HResult;

      La déclaration devrait ressembler à :
      TOleControl = class (Twin Control, IUnknown, IOleClientSite, IOleControlSite, IOleInPlaceSite, IOleInPlaceFrame, IDispatch, IPropertyNotifySink, ISimpleFrameSite)
    3. Dans la clause uses de l'unité AcroPDFLib_TLB.pas, remplacer OleCtrls par OleCtrlsAdobe
    Philippe.

  3. #3
    Membre actif
    Avatar de Eric.H
    Homme Profil pro
    Inscrit en
    Décembre 2004
    Messages
    220
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations forums :
    Inscription : Décembre 2004
    Messages : 220
    Points : 286
    Points
    286
    Par défaut
    Je viens juste de lire la soluce sur le forum d'adobe, et je m’apprêtait à l'indiquer ici.... trop tard ;-), merci

    Pas encore testé en XE5, une fois testé je clôturerai...
    Pour ceux que cela intéresse :
    https://forums.adobe.com/message/6400731#6400731
    N.B. Lu dans un autre Forum, cela semble fonctionner en delphi 2007 et XE2

  4. #4
    Membre actif
    Avatar de Eric.H
    Homme Profil pro
    Inscrit en
    Décembre 2004
    Messages
    220
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations forums :
    Inscription : Décembre 2004
    Messages : 220
    Points : 286
    Points
    286
    Par défaut
    J'ai opté pour une autre solution moins lourde, trouvé sur forum adobe, où on surcharge QueryInterface:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
       TAcroPDF = class(TOleControl)
       ...
       protected
         function QueryInterface(const IID: TGUID; out Obj): HResult; override;
     
    function TAcroPDF.QueryInterface(const IID: TGUID; out Obj): HResult;
    begin
      if IID = IServiceProvider then
        Result := E_NOINTERFACE
      else
        inherited;
    end;
    Fonctionne avec version 11.0.07 et .06 sous W7 et XE5 32b

  5. #5
    Membre actif
    Avatar de castorcharly
    Homme Profil pro
    Chef de projet
    Inscrit en
    Février 2009
    Messages
    416
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 68
    Localisation : France, Dordogne (Aquitaine)

    Informations professionnelles :
    Activité : Chef de projet
    Secteur : Biens de consommation

    Informations forums :
    Inscription : Février 2009
    Messages : 416
    Points : 299
    Points
    299
    Par défaut
    Bonjour,

    Pour info ce problème est aussi présent sur mon XE2.
    Pour l'instant, je suis repassé sous Adobe 10 en attendant de trouver vos solutions.

    Ma question est, une fois que vous faites la correction proposée par Eric.H en surchargeant QueryInterface,
    rencontre t on des problèmes si le programme est utilisé sur un poste qui a une version d'Adobe
    inférieure à la 11 ?
    “La perfection est atteinte, non pas lorsqu'il n'y a plus rien à ajouter, mais lorsqu'il n'y a plus rien à retirer.” Antoine de Saint-Exupéry.

    D1..D7-2005,2006-Xe2 Ent-XE7 archi-MsSql 2005..2008 & R2, FB 1.5..2.5.x.x -Win10,Win7/64-Xp-
    _____________________________________________________

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Savoir quelle version de windows (XP, Seven 32b, Seven 64b)
    Par Jean-Pierre49 dans le forum Contribuez
    Réponses: 4
    Dernier message: 17/06/2017, 16h58
  2. taille struct 32b et 64b
    Par eric_vi dans le forum Qt
    Réponses: 8
    Dernier message: 19/05/2010, 15h08
  3. Réponses: 8
    Dernier message: 25/01/2010, 13h21
  4. [Fait]Comment utiliser le controle ActiveX Acrobat Reader
    Par Heureux-oli dans le forum Contribuez
    Réponses: 24
    Dernier message: 28/02/2008, 19h34
  5. [ActiveX Acrobat] Problème avec la définition du CLSID / EVENTID
    Par SubZero2 dans le forum API, COM et SDKs
    Réponses: 10
    Dernier message: 19/09/2005, 08h54

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo