Domanda

Sto usando c # per creare un pulsante per IE e questo pulsante esegue determinate azioni che dipendono dal fatto che il documento è un documento PDF. Sto cercando di impostare una protezione per impedire che si verifichi qualsiasi azione se il tipo di documento non è un PDF ma non sono sicuro di come IE consegna il documento ad Adobe e il lettore prende in carico. Sto usando entrambi SHDocWv che hanno esaminato gli oggetti WebBrowserClass e non sono sicuro di come capirlo. qualche suggerimento?

È stato utile?

Soluzione

È un po 'problematico fare questo AFAIK.

Il valore della proprietà IWebBrowser2 :: Type dipende dal plug-in che hai installato che gestisce i PDF, perché alcuni plug-in creano wrapper HTML per file PDF (come Adobe) in modo da ottenere " Documento HTML " come tipo e alcuni plug-in non lo fanno (come Foxit), quindi non puoi inoltrarlo esclusivamente.

Quindi, se hai PDF con wrapper HTML puoi usare IHTMLDocument2 :: mimeType per scoprire il tipo esatto del documento (i file JPEG / GIF / PNG / ecc. sono tutti racchiusi in HTML dal browser). Ma come so che è anche inaffidabile, ad esempio sul mio computer restituisce "Documento Firefox" per i documenti HTML perché i file .html sono associati a Firefox: s Ma non ho testato per vedere se questo è il caso dei PDF alos.

Un'altra opzione è quella di utilizzare la chiamata API GetUrlCacheEntryInfoEx per ottenere il file nella cache del browser locale che memorizza il documento, quindi leggerlo (solo l'inizio del file, penso che solo i primi 256 byte siano importanti) e chiama FindMimeFromData con i dati che hai appena letto e restituirà il tipo mime.

Altri suggerimenti

Controlla il tipo mime del documento o vedi window.location.href del browser web ... Se viene visualizzato il pdf, potresti trovarlo ...

Un altro buon modo è fare quanto segue ..

1] Trasmetti l'oggetto Document a IPersist e quindi estrai il CLSID usando .GetClassID (..). 2] pInvoke ProgIDFromCLSID per estrarre il progId 3] Abbina il progID a oggetti / applicazioni COM noti.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top