Androidの標準ブラウザではMoodle上のPDFファイルを表示できない

Androidの標準ブラウザではMoodle上のPDFファイルを表示できない

- Tatsuya Shirai の投稿
返信数: 6

 Androidの標準ブラウザではMoodle上のPDFファイルを表示できない,という話を某所で聞きました.そんなバカな,と,私のMoodle1.9.14+のサイトに005SH(Android2.3)でアクセスしてリソースのPDFファイルをクリックしたところ,確かにNGでした.

 何かが送られては来るのですが,Adobe Acrobatを開くと真っ白な1ページ.では,ダイレクトリンク先を保存したところ,view.pdfという名前でダウンロードされ,それをAdobe Acrobatで開くと同じく真っ白い1ページ.

 PDFファイルの頭にゴミが入ったのか?と思ってエディタで開いてみたのですが,特に問題はありませんでした.他の表示可能なPDFファイル(Moodle以外からダウンロード)と特に大きな違いはありません.環境がAndroid上でしたので,ファイルの終端までは見ていません.

 とりあえず今は時間の余裕がありませんので,なぜダウンロードしても正常に表示できないのか?が分かりません.どなたか,この問題,原因を調べて頂けないでしょうか.Moodle2でも同様だと聞いています.

Tatsuya Shirai への返信

Re: Androidの標準ブラウザではMoodle上のPDFファイルを表示できない

- Mari Yamauchi の投稿

こんにちは。

この記事を見つけました。もしかして同じ情報源?(でしたら捨ててください)

なんだか、外部リンクだとうまくいくらしいですが。それを使えるようになるには、どっかコードを書き換えないといけないらしい、的なことが書いてあります。

去年の記事ですね。レスの中で、Display: Open の設定を使う案が出されてます。それと関連記事が。

中途半端でごめんなさい。

最大評点: お役立ち度: ★★★★★★★ (1)
Mari Yamauchi への返信

Re: Androidの標準ブラウザではMoodle上のPDFファイルを表示できない

- Tatsuya Shirai の投稿

facebook上の松崎さんの書き込みが私の情報源です.
http://www.facebook.com/#!/groups/103710113036755/

(特定の発言へのリンクはどうすればいいのだろう??)

山内先生の発見したUsing Moodleの投稿は随分と古いですね.ほぼ1年前.私はこの問題に全く気付きませんでした.

ダイレクトリンクでダウンロードしたPDFファイルのヘッダー自体は壊れていないのに表示できないことから,お尻が切れているなどの問題なのではないかと考えています.

Tatsuya Shirai への返信

Re: Androidの標準ブラウザではMoodle上のPDFファイルを表示できない

- Tatsuya Shirai の投稿

改めて,Android上で強制的にダウンロードしたPDFファイル(downloadフォルダ内に作成されるview.pdf)をAndroid上のファイラーで強制的に開いたところ,PDFとしてきちんと表示されました.このview.pdfとPCでダウンロードしたPDFを比較したところ完全に一致しましたのでファイルが壊れている訳では無さそうです(以前に試した別のPDFファイルの場合は表示不可でしたが).

とはいえAndroidの標準ブラウザ上でファイラーなどの特別なソフトウェアを用いなくてもPDFを閲覧できるようにしなくてはいけませんし,ダイレクトリンクからリンク先ファイルを保存する際にもview.pdfではなく,本来のファイル名で保存されなくてはいけません.何か,ヘッダーのフォーマットが正しくないのでしょう.

Tatsuya Shirai への返信

Re: Androidの標準ブラウザではMoodle上のPDFファイルを表示できない

- Hiroyuki H の投稿

手元にあるAndroid2.3.4の標準ブラウザで、Moodle2.2.2+ (Build: 20120315) でも相変わらず同じ状況です。PDFファイルリソースの表示オプションをポップアップにした状態で、Android標準ブラウザでリンクをクリックすると白紙が表示されます。

Android MarketからインストールしたOpera Mini ウェブブラウザを使うと、ブラウザでクリックした際にファイルのダウンロード画面が表示され、ダウンロード後Adobe Readerで正常に開くことができます。

ただ、OperaはOperaサーバ上でコンテンツを圧縮するせいなのか、接続元のIPアドレスで閲覧制限をかけているようなサイト(イントラ上のMoodleなど)はこのやり方ではアクセスできないですね。

最大評点: お役立ち度: ★★★★★★★ (1)
Hiroyuki H への返信

Re: Androidの標準ブラウザではMoodle上のPDFファイルを表示できない

- udagawa mitsuru の投稿

AndroidのブラウザでPDFを正常にダウンロードできないのはヘッダでinlineが送られることに原因があります。(詳しい解説を見て対策した覚えがあるのですが、元のサイトは失念しました)

そのため、/path/to/moodle1.9.x/lib/filelib.phpの720行目付近を書き換えます。

    // if user is using IE, urlencode the filename so that multibyte file name will show up correctly on popup
    if (check_browser_version('MSIE')) {
        $filename = rawurlencode($filename);
    }

+   $filemime = mimeinfo('type', $filename);
+   $isAndroid = strpos($_SERVER["HTTP_USER_AGENT"], "Android");
+   if($isAndroid && ($filemime == 'application/pdf' || $filemime == 'application/x-pdf')){
+     $forcedownload = True;
+     $mimetype = $filemime; 
+   }

    if ($forcedownload) {
        @header('Content-Disposition: attachment; filename="'.$filename.'"');
    } else {
        @header('Content-Disposition: inline; filename="'.$filename.'"');
    }

Moodle 2.2でも同じような変更で対応できましたので、それ以外の2.xでも同様だと思われます。

最大評点: お役立ち度: ★★★★★★★ (1)