PDFをGoogle docs Viewer経由で開くアイコンを挿入してみた ― 2009/10/13 23:00
アイコンをクリックするとGoogle docs Viewer経由でPDFが開くようになります。
快適!PDFのリンクをGoogle docs Viewer経由に置き換えるgreasemonkey - Koonies/こりゃいいな!
がとてもよさげだったのですが、これをやってしまうとPDFをダウンロードして開きたい時は(Google docs Viewerを開いてからというのはなし)その都度スクリプトを無効にしてリロードしないといけないので、どうしたものかと考えてました。
JavaScript知らないしGreasemonkey入れたことないし……などと思いながらググってると
Greasemonkeyによるアプリケーション開発:第1回 Greasemonkeyによるアプリケーション開発の準備|gihyo.jp … 技術評論社
の参考資料に
で、このありさまw
アイコン変更・gglpdf.target = '_blank';追加 10/15 18:26
logo.border = 0;が消えてた (^^; ↓少しアイコンを大きくしてみました。10/18 0:44
注意:私はJavaScriptを知りませんのでとんでもない間違いがあるかもしれません。
おかしな点があれば教えてもらえると助かります。
もしかすると、リンクとアイコンの機能は逆の方が良かったかも……つうことで
アイコンはこんな感じ。(userContent.jsでも動作しました)
09/12/04 「orgpdf.target = l[i].target」にセミコロン忘れてたので修正。orz
10/03/22 微調整版でmarginやpaddingを0にしてCSSに影響されないように。
はてなブックマークにPDFを直リンされている場合
ところで、Google docs Viewer経由で開く場合、PDF内のJavaScriptはどう処理されるのでしょうか?
セキュリティ的にはかえって不味いのかなぁ。
もうPDF/PPT/TIF viewer with Google Docs (Event Driven) for Greasemonkeyでいいや。
リンクを左クリックでGoogle docs Viewer経由、右クリックの「名前を付けてリンク先を保存」で直接ダウンロードされます。
Google docs Viewer経由を新しいタブで開く方法が分からなくて、アイコン挿入に戻しました。
どう書けば別タブで開くのだろう……JavaScriptもオブジェクト指向も知らないです。^^;
関連?
PDFの表示あれこれ
快適!PDFのリンクをGoogle docs Viewer経由に置き換えるgreasemonkey - Koonies/こりゃいいな!
がとてもよさげだったのですが、これをやってしまうとPDFをダウンロードして開きたい時は(Google docs Viewerを開いてからというのはなし)その都度スクリプトを無効にしてリロードしないといけないので、どうしたものかと考えてました。
JavaScript知らないしGreasemonkey入れたことないし……などと思いながらググってると
Greasemonkeyによるアプリケーション開発:第1回 Greasemonkeyによるアプリケーション開発の準備|gihyo.jp … 技術評論社
の参考資料に
「2.DIVE INTO GREASEMONKEY」の日本語訳ドキュメントもこちらのページに添付されています。日本語の説明があるなら見てみようかと思ったのが運の尽き。悪戦苦闘してました。(^^;
で、このありさまw
(function(){
if (location.href.indexOf("http://docs.google.com/") == -1) {
var l = document.getElementsByTagName("a");
var i = l.length;
while (i--) {
if (l[i].href.match(/^[^?]+\.(pdf|ppt|tif)$/)) {
var logo = document.createElement("img");
logo.src = 'data:image/gif;base64,R0lGODlhEAAQAPUAAP///wAAAN0AAdoEAfgAAN4NBgB1PAF8PtYXFAGBPTZpLO0UEgGHOwCLOypfoxZkugGNOhBmwhiDMyJ/M9smIwCSOgGUN9otKN8uLNQ7OyCYSy52xiebTPA5Ofo5OXt7e1Ofdd1jYmib0HWi0tiGg4ajxna4k/t8eZWnxPCGg4mv15O+otudm+izFO+xI+24Ee+zLN25ab/EuOTIesjIycDO3MfU5MLfycrb6+7OzerXrO7csu3kx+Ls5+zn7Pr5+SH5BAEAAAEALAAAAAAQABAAAAZ4wIBwSCwWP8jkp1h7iHILggAA+NCWQ1xk47sUBtQP4Dq0jVSriUQRppIDjlKPY6k0wkohSsa7aSAMAD9UYUIzLy07JgwJACeEVUIxLjA6IAcGAB6QWERiVAicRp8YIRQYGSydQ2IpJJCRRwAdsLGetYVHSrtGvUVBADs=';
logo.border = 0;
var gglpdf = document.createElement("a");
gglpdf.insertBefore(logo, gglpdf.firstChild);
gglpdf.href = 'http://docs.google.com/viewer?url=' + l[i].href;
gglpdf.target = '_blank';
l[i].parentNode.insertBefore(gglpdf, l[i].nextSibling);
}
}
}
})();
差し替え 10/13 23:27アイコン変更・gglpdf.target = '_blank';追加 10/15 18:26
logo.border = 0;が消えてた (^^; ↓少しアイコンを大きくしてみました。10/18 0:44
logo.src = 'data:image/gif;base64,R0lGODlhEAAQAPUAAP///wAAAKgAALcAAMIAAMUAANIAAARxLgN7MgFdvAN9MyJuLdgXFgBfwQNfvwOBNAKDNQOGNgWGNQpkwQOJOAmGNt0mJRZtxzqAQeEvLtY9PfI7OyubWPw7O3t7ez6nZkeM002kb1GS1d9jY+lfXu53dm6k29mGhf18e+CmCvKGheOpC+erDOmtDuawHN2dnOOzLpS85eS5RKDK0uHIbsjJyr3O3vTWh+XYs+vZn87m2Nnlz9fl897v5OLr8fv7+yH5BAEAAAEALAAAAAAQABAAAAaHwIDQQywWhcghYMn01DxJW8LBIxkIAoAH8ET6Eo1YyVAYaJfdAM90mWEqj4XWKJyAfh8KJQJhLqEBFyI+PRx8DwA/TUI5Li03OhAKCgAoiwEyKSssOw8KCAAdlzgyMDQhnwcADJdKfqutAVtLGRoZI7UvgK4qJ69aSbMbv8BIs8TFQ0bLRAFBADs=';
注意:私はJavaScriptを知りませんのでとんでもない間違いがあるかもしれません。
おかしな点があれば教えてもらえると助かります。
もしかすると、リンクとアイコンの機能は逆の方が良かったかも……つうことで
// ==UserScript==
// @name PDF/PPT/TIF viewer with Google docs
// @namespace http://puppet.asablo.jp/blog/2009/10/13/4631429
// @include http://*
// @exclude http://docs.google.com/*
// ==/UserScript==
// Based on script by Koonies (http://d.hatena.ne.jp/Koonies/): http://userscripts.org/scripts/show/59557
(function(){
if (location.href.indexOf("http://docs.google.com/") == -1) {
var l = document.getElementsByTagName("a");
var i = l.length;
while (i--) {
if (l[i].href.match(/^[^?]+\.(pdf|ppt|tif)$/)) {
var logo = document.createElement("img");
logo.src = 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAMAAAAoLQ9TAAAAYFBMVEX////r6+vi4uLf39/m5ubb29vV1dXY19fu7u7jtLXQzs3kRUjFxcXjTlPlVFngeHvhmpro6OjoXWHMqKjYTE/FW13KYWTZb2+vrq2seHnHd3i3ioq8kpOopqa4uLfl0M9dhQjzAAAAAXRSTlMAQObYZgAAAJNJREFUeF5lj0cSwzAMxMKi3t3T///LiJr4ZB4x2BF0ux43AGanSBltYgcNrLUuFCKljO8ABNS8I4rzBzCHwohdOYEPtbEo58Qn10QZEyE1TchdOQFOr8fknDNj0gBqLnlZQkiuAwtc8/o8jvd9W2cp/ea0RZKMGCUMy54iYD+i8QqVMOPoVkqLoeJH08jW2vvr539EgwaIZZTTdAAAAABJRU5ErkJggg==';
logo.border = 0;
logo.align = 'absbottom';
var orgpdf = document.createElement("a");
orgpdf.href = l[i].href;
orgpdf.target = l[i].target;
orgpdf.insertBefore(logo, orgpdf.firstChild);
l[i].href = 'http://docs.google.com/viewer?url=' + l[i].href;
l[i].target = '_blank';
l[i].parentNode.insertBefore(orgpdf, l[i].nextSibling);
}
}
}
})();
リンクは新規タブにGoogle docs Viewer経由で開き、元のURLはアイコンに保持します。09/12/04 「orgpdf.target = l[i].target」にセミコロン忘れてたので修正。orz
10/03/22 微調整版でmarginやpaddingを0にしてCSSに影響されないように。
はてなブックマークにPDFを直リンされている場合
if (l[i].href.match(/^[^?]+\.(pdf|ppt|tif)$/)) {
↓
if ((l[i].href.match(/^[^?]+\.(pdf|ppt|tif)$/)) && (l[i].href.indexOf("http://b.hatena.ne.jp/entry/") == -1)) {
のように変更すればリンクを置き換えなくなります。ところで、Google docs Viewer経由で開く場合、PDF内のJavaScriptはどう処理されるのでしょうか?
セキュリティ的にはかえって不味いのかなぁ。
リンクを左クリックでGoogle docs Viewer経由、右クリックの「名前を付けてリンク先を保存」で直接ダウンロードされます。
Google docs Viewer経由を新しいタブで開く方法が分からなくて、アイコン挿入に戻しました。
どう書けば別タブで開くのだろう……JavaScriptもオブジェクト指向も知らないです。^^;
関連?
PDFの表示あれこれ
コメント
トラックバック
このエントリのトラックバックURL: http://puppet.asablo.jp/blog/2009/10/13/4631429/tb
※なお、送られたトラックバックはブログの管理者が確認するまで公開されません。
コメントをどうぞ
※メールアドレスとURLの入力は必須ではありません。 入力されたメールアドレスは記事に反映されず、ブログの管理者のみが参照できます。
※投稿には管理者が設定した質問に答える必要があります。