web-dev-qa-db-ja.com

android)のinappbrowserでPDFファイルを起動できません

ユーザーがリンクをクリックしたときに、inappbrowserにPDFを表示する必要があります。 iOSでは正常に動作していますが、Androidでは動作していません。プロジェクトにIBMワークライトを使用しています。以下は私が使用したコードです:

window.open("pdfURL","_blank","location=yes");

IOSではinappbrowserが起動してPDFを表示しますが、Androidではinappbrowserは起動しますが、コンテンツは表示されません

9
user3878988

PDFビューアが組み込まれているiOSとは異なります-AndroidのWebビューにはPDFビューアが組み込まれていません。
これがAndroidで失敗する理由です。

Androidには2つの選択肢があります。

  1. Googleドキュメントを使用してファイルをリモートサーバーに保存し、次のようにユーザーをリダイレクトしてファイルを表示します:window.open(encodeURI('https://docs.google.com/gview?embedded=true&url=http://www.your-server.com/files/your_file.pdf'), '_blank', 'location=yes,EnableViewPortScale=yes');

  2. または、Cordovaプラグインを使用します。例 これ (Googleで詳細を検索できます)。このためには、 WorklightでCordovaプラグインを作成する方法 を学ぶ必要があります。

ここで他のオプションを読むことができます: Phonegap InAppBrowser display pdf 2.7.

16
Idan Adar

使ってみてください

window.open('pdfURL',"_system","location=yes,enableViewportScale=yes,hidden=no");

ここで、_systemを使用すると、ファイルがダウンロードされ、Chromeまたはその他のPDFビューア)のようにシステムのアプリケーションで開きます。

3
coder2017

グーグルドライブビューアを使用することは良いクイックオプションのようです。

ただし、今後はAPIが変更または減価償却される可能性があり、これをサポートする新しい方法を見つける必要があります。また、ファイルは公開されてダウンロード可能であるため、セキュリティもここでのもう1つの考慮事項です。

最近のプロジェクトでも同様の状況があり、次を使用して解決しました: pdf.js

これはJSベースのPDFパーサーであり、優れたリーダー機能のセットを備えています。ネイティブのパーサーほどスムーズではありませんが、私たちのために仕事をしてくれました。主な利点は、私たちが制御できることです。コードとデバイスファイルシステムからファイルを開くことができました。

アプリ内ルートのようなよりネイティブなルートを選択したい場合は、@ Idan Adarが述べたように、ネイティブライブラリ+コルドバプラグインが最適です。

1
Gideon Simons

UriEncodeComponent(link)と https://docs.google.com/viewer?url= linkを使用します

Doc、Excel、PowerPoint、PDFがすべてサポートされています。

アプリブラウザでCordovaを使用します。

document.addEventListener("deviceready", onDeviceReady, false);
function onDeviceReady() {
    window.open = cordova.InAppBrowser.open;
        }

            $("body").on("click",function(e){
           var clicked = $(e.target);
         if(clicked.is('a, a *'))
       {
             clicked = clicked.closest("a");
             var link = clicked.attr("href");
            if(link.indexOf("https://") !== -1)
           {
               if(true) //use to be able to determine browser from app
                 {
                    link = "http://docs.google.com/viewer?url=" +  encodeURIComponent(link) + "&embedded=true";
             }

                 window.open(link, "_blank", "location=no,toolbar=no,hardwareback=yes");
                return false;
            }
    }
    });
1
Marc Magon

このコードを試してみてください。うまく機能しています。

var inAppBrowserRef;
var target = "_system";
var options = "location=yes,hidden=no,enableViewportScale=yes,toolbar=no,hardwareback=yes";
inAppBrowserRef = cordova.InAppBrowser.open(url, target, options); 
0