2

ユーザーがダウンロードするかどうかを尋ねずに、モバイルブラウザ内にPDFドキュメントを表示する必要があります。Safari(iOs)を使えば完璧にできますが、Android(バージョンICS)のネイティブブラウザ(「インターネット」と呼ばれます)を使って同じことをしようとすると、ファイルがダウンロードされ、ダウンロードすら機能しないようです。 ..ダウンロードが完了すると、ファイルは「ダウンロードに失敗しました」と表示され、PDFファイルリーダーを使用して開くことができません。

同じリンクのダウンロードは、モバイルではない他のすべてのブラウザで正常に機能します。問題は、応答に追加する必要のあるヘッダーのいくつかにあると思います。

Content-Typeapplication/pdfとして設定し、Content -Dispositioninline; filename="report.PDF"として設定しています。

同じ問題を抱えている人はいますか?解決策を知っている人はいますか?:)

ありがとう!

ルーカス

4

1 に答える 1

2

AndroidブラウザにはデフォルトのPDFサポートが組み込まれていないため、これを簡単に行うことはできません。

ただし、ここでできることは2つあります。

1)PlayストアからAdobe Readerをダウンロードしてインストールし、次のコードを試してください

最初にデバイスのメモリにファイルを作成し、次にpdfデータをそのファイルに読み込みます。「theurl」は、PDFが配置されている場所のURLです。

InputStream in = null;
File dst = new File(Environment.getExternalStorageDirectory()+"/myPDF.pdf");
    try {
        in = theurl.openStream();
    } catch (IOException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }               
    OutputStream out = null;
try {
    out = new FileOutputStream(dst);
} catch (FileNotFoundException e) {

    // TODO Auto-generated catch block
}
     // Transfer bytes from in to out
     try {
        byte[] buf = new byte[100000];
        int len;
    while ((len = in.read(buf)) > 0) {
      out.write(buf, 0, len);
     }
} catch (IOException e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
}
     try {
    in.close();
} catch (IOException e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
}
     try {
    out.close();
} catch (IOException e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
}
    Intent intent = new Intent();
    Uri path = Uri.fromFile(dst);
    intent.setDataAndType(path, "application/pdf");
    startActivity(intent);

これにより、PDFがダウンロードされ、デバイスのメモリに作成されます。次に、インテントは、デバイスのadoveリーダーを使用してアプリケーションからPDFを開きます。

別のオプションは

2)http://jaspreetchahal.org/android-how-to-open-pdf-file-within-the-browser/にアクセスして、その人がどのようにそれを行ったかを確認します

于 2012-08-31T20:05:44.150 に答える