Question

J'utilise c # pour créer un bouton pour IE. Ce bouton exécute certaines actions qui dépendent toutes du fait que le document est un document PDF. J'essaie de mettre en place une protection pour empêcher toute action si le type de document n'est pas un PDF, mais je ne sais pas comment IE cède le document à Adobe et le lecteur prend les choses en main. J'utilise les deux SHDocWv ont regardé les objets WebBrowserClass et ne sais pas comment résoudre cela. des suggestions?

Était-ce utile?

La solution

C’est un peu problématique de faire ce que je peux dire.

La valeur

de la propriété IWebBrowser2 :: Type dépend du plug-in que vous avez installé et qui gère les fichiers PDF, car certains plug-ins créent un wrapper HTML pour un fichier PDF (comme Adobe), de sorte que vous obtenez " Document HTML " comme le type et certains plug-ins ne le font pas (comme Foxit), vous ne pouvez donc pas vous en servir exclusivement.

Donc, si vous avez un PDF avec wrapper HTML, vous pouvez utiliser IHTMLDocument2 :: mimeType pour connaître le type exact du document (JPEG / GIF / PNG / etc. Les fichiers sont tous enveloppés au format HTML par le navigateur). Mais comme je sais que ce n'est pas fiable non plus, par exemple sur ma machine, il renvoie "Firefox Document". pour les documents HTML car les fichiers .html sont associés à Firefox: s Mais je n’ai pas essayé de voir si c’était le cas avec les PDF alos.

Une autre option consiste à utiliser l'appel API GetUrlCacheEntryInfoEx pour obtenir le fichier dans le cache du navigateur local dans lequel le document est stocké, puis le lire (seul le début du fichier, je pense que seuls les 256 premiers octets sont importants). et appelez FindMimeFromData avec les données que vous venez de lire et le type mime sera renvoyé.

Autres conseils

Vérifiez le type mime du document ou consultez le window.location.href du navigateur Web ... Si le fichier PDF est affiché, vous pourrez le trouver ...

Un autre bon moyen consiste à effectuer les opérations suivantes.

1] Convertissez l'objet Document en IPersist, puis extrayez le CLSID à l'aide de .GetClassID (..). 2] pInvoke ProgIDFromCLSID pour extraire le progId 3] Faites correspondre le progID avec les objets / applications COM connus.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top