Pergunta

Eu estou usando c # para criar um botão para IE e este botão executa certas ações que todos dependem do documento sendo um documento PDF. Eu estou tentando configurar um guarda para prevenir qualquer lugar ação tomada se o tipo de documento não é um PDF mas não sabe como o IE mãos sobre o documento para Adobe e Reader assume o comando. Eu estou usando tanto SHDocWv ter olhado para os objetos WebBrowserClass e não sabe como descobrir isso. alguma sugestão?

Foi útil?

Solução

É uma problemática bit pouco para fazer isso AFAIK.

Valor de IWebBrowser2 :: Type propriedade depende do que plug-in de ter instalado que lida com PDFs, porque alguns plug-ins cria HTML wrapper para arquivos PDF (como o Adobe) de modo a obter "HTML documento", como tipo e alguns plug-ins não fazer isso (como Foxit), então você não pode retransmitir neste exclusivamente.

Então, se você tem PDF com HTML envoltório você pode usar IHTMLDocument2 :: mimeType para descobrir o tipo exato do documento (JPEG / GIF / PNG / etc. Arquivos são tudo embrulhado em HTML pela navegador). Mas como eu sei que não é confiável também, por exemplo, na minha máquina ele retorna "Documento Firefox" para documentos HTML porque os arquivos .html estão associados com o Firefox: s Mas eu não fiz teste para ver se este é o caso com PDFs alos.

Outra opção é usar GetUrlCacheEntryInfoEx chamada de API para obter arquivo em cache do navegador local que documento lojas, em seguida, lê-lo (apenas o início do arquivo, acho que apenas os primeiros 256 bytes são importantes) e chamada FindMimeFromData com os dados que você acabou de ler e ele irá retornar mime tipo.

Outras dicas

Verifique mime tipo de documento ou ver a window.location.href de webbrowser ... Se pdf está sendo exibido, você seria capaz de encontrá-lo ...

Outra boa maneira é fazer o seguinte ..

1] molde do objecto do documento para IPersist e, em seguida, extrair o CLSID usando .GetClassID (..). 2] pInvoke ProgIDFromCLSID para extrair o progID 3] Jogo do progID contra COM objetos / aplicações conhecidas.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top