« Internet Explorer 8 の互換表示の切り替えについて | トップページ | 「Love in Action」バナーを掲載しました »

Internet Explorer で Adobe Reader のバージョン7、8、9を検出する方法

 以前の記事で、“現在の手法では「バージョン 7 と 8 を区別することが技術的に不可能」らしい”と書きましたが、実は当時から Adobe Reader 7 以降のバージョンを区別する方法が明らかにされていたようです。
 最近とある仕事の関係で、その方法を知る機会があったので、記事に起こしておくことにしました。

 エッセンスは次のとおりです。ポイントは GetVersions() のところですね。

version = new window.ActiveXObject('AcroPDF.PDF').GetVersions();

 上記の結果、version には例えば次のような文字列が入ります。

Accessibility=9.1.0,AcroForm=9.1.2,Annots=9.1.2,Checkers=9.1.0,
DigSig=9.1.2,DVA=9.1.0,eBook=9.1.0,EScript=9.1.2,HLS=9.1.0,IA32=9.1.0,
MakeAccessible=9.1.0,Multimedia=9.1.0,PDDom=9.1.0,PPKLite=9.1.2,
ReadOutLoud=9.1.0,reflow=9.1.0,SaveAsRTF=9.1.0,Search=9.1.2,SendMail=9.1.0,
Spelling=9.1.0,Updater=9.1.0,weblink=9.1.0,

 この結果は Adobe Reader 9.1.2 のものです。version の中には複数の機能のバージョンが含まれているようです。

 もう少し細かい話としては、例えば次のようなコードで Adobe Reader のメジャーバージョンを取り出すことができます。

control = new ActiveXObject(control_text);
version = control.GetVersions().split(",");
version = version[0].split("=");
version = parseFloat(version[1]);

 途中の version[0] は上にあげた文字列の Accessibility=9.1.0 が入っているはずですので、バージョン番号の最下位まで見るのには不適切なコードになっています。

 なお、この方法で分かるのは Internet Explorer のアドオンとして利用できる Adobe Reader のバージョンです。
 ActiveX を利用しているため、上記のコードのままで使うと IE 以外ではエラーが出ると思われます。

 最後に、参考にさせていただいたウェブページを記載しておきます。詳しいサンプルコードが掲載されているので、当記事は読み飛ばしても、リンク先を読み込むことをお勧めします。

Detecting plugins in Internet Explorer (and a few hints for all the others)
Opening a PDF Reader with Javascript and ActiveXObject : Javascript, ActiveXObject, IE

|

« Internet Explorer 8 の互換表示の切り替えについて | トップページ | 「Love in Action」バナーを掲載しました »

トラックバック

この記事のトラックバックURL:
http://app.cocolog-nifty.com/t/trackback/49345/45312933

この記事へのトラックバック一覧です: Internet Explorer で Adobe Reader のバージョン7、8、9を検出する方法:

« Internet Explorer 8 の互換表示の切り替えについて | トップページ | 「Love in Action」バナーを掲載しました »