10

現在、モジュールのダウンロードに取り組んでいます。ユーザーがダウンロード ボタンをクリックすると、ファイル (pdf、zip ファイル、または docx のいずれか) がサーバーからダウンロードされ、ローカル ストレージに保存されます。FileTransfer.Download() メソッドを使用してファイルをダウンロードできますが、ファイル パスを渡して開くことができません。

以下は私のコードです:

<!DOCTYPE HTML>
<html>
<head>
    <meta name = "viewport" content = "user-scalable=no,width=device-width" />
    <meta http-equiv="Content-type" content="text/html; charset=utf-8">
    <title>Test Page</title>
<script type="text/javascript" charset="utf-8" src="js/cordova-2.0.0.js"></script>
<script type="text/javascript" src="js/jquery-1.7.2.min.js"></script>
    <style type="text/css">
        * {
            -webkit-tap-highlight-color: rgba(0, 0, 0, 0);  
        }
    </style>
  <script type="text/javascript" charset="utf-8">
      function init() {
          document.addEventListener("deviceready", ready, true);
      }

      function ready() {
          console.log("App is ready.");
      }

      function download() {

       //   var remoteFile = "https://dl.dropbox.com/u/6731723/a.zip";
          var remoteFile = "https://dl.dropbox.com/u/6731723/Beaver.pdf";
          var localFileName = remoteFile.substring(remoteFile.lastIndexOf('/') + 1);

          window.requestFileSystem(LocalFileSystem.PERSISTENT, 0, function (fileSystem) {
              fileSystem.root.getFile(localFileName, { create: true, exclusive: false }, function (fileEntry) {
                  var localPath = fileEntry.fullPath;
                  console.log("localPath1:" + localPath);
                  if (device.platform === "Android" && localPath.indexOf("file://") === 0) {
                      localPath = localPath.substring(7);
                  }
                  console.log("localPath2 save:" + localPath);
                  var ft = new FileTransfer();
                  ft.download(remoteFile,
                      localPath, function (entry) {
                          console.log("file path:" + entry.fullPath);
                          var linkopen = document.getElementById("openlink");
                          linkopen.style.display = "block";
                          linkopen.href = entry.fullPath;

                          // var dwnldImg = document.getElementById("dwnldImg");
                          //dwnldImg.src = entry.fullPath;
                          //dwnldImg.style.visibility = "visible";
                          //dwnldImg.style.display = "block";
                      }, fail);
              }, fail);
          }, fail);
      }

      function fail(error) {
          console.log("error:" + error.code);
      }
  </script>
</head>

<body onload="init();">
    <a href="#" onclick="download();">Download file</a>

    <br />
    <br />
    <br />
    <a href="#" id="openlink" style="display:none;font-size:larger;">open</a>
</body>
</html>

それを機能させる方法はありますか?

4

4 に答える 4

4

ネイティブの PhoneGap は、SD カードに PDF ファイルをダウンロードすることを許可しておらず、PDF ファイルを自動的に表示しません。

  1. スマートフォンにpdfリーダーをインストールしてください。
  2. ファイルをダウンロードするためのプラグインを作成します。
  3. 手順 1 でインストールしたプログラムを使用して、pdf を開くためのプラグインを作成します。

ステップ 2 と 3 の詳細: Eclipse で
開発環境 PhoneGapを設定します。
サンプルの Java クラスはこちら から
ダウンロード ダウンロードしたファイルを「src」フォルダに解凍 ダウンロードしたファイルを「 assets /www 」 フォルダに解凍 ダウンロードしたファイルを「 assets / www 」フォルダに解凍 js を呼び出す:



<script charset="utf-8" src="main.js"> </script>
<script charset="utf-8" src="pdfviewer.js"> </script>
<script charset="utf-8" src="downloader.js"> </script>

res / xml / plugins.xml」に次を追加します。

<plugin name="Downloader" value="com.phonegap.plugins.downloader.Downloader"/>
<plugin name="PdfViewer" value="com.phonegap.plugins.pdfViewer.PdfViewer"/>

プラグインで定義されたメソッドを呼び出すには、index.html で次のコードをテストします。

<! DOCTYPE HTML>
<html>
<head>
<title> PhoneGap-Android PDF Opening App</title>
<script charset="utf-8" src="phonegap-1.0.0.js"></script>
<script charset="utf-8" src="main.js"></script>
<script charset="utf-8" src="pdfviewer.js"></script>
<script charset="utf-8" src="downloader.js"></script>
</Head>

<body>
<h1> Hello World </ h1>
<a href = "#" 'sampleurf.pdf', true, downloadOkCallbak, downloadErCallbak) "> Download pdf </a> <br>
<a href="#" onclick="window.plugins.pdfViewer.showPdf('/sdcard/download/sample/samplesurf.pdf');"> open </a>
</body>
</html>

クレジットはhttp://www.giovesoft.com/2011/08/download-and-open-pdf-with-phonegap.htmlにあります

于 2012-11-21T13:16:14.803 に答える
1

ファイル オープナー プラグイン ( https://github.com/markeeftb/FileOpener ) を使用しますが、psf および doc ファイルを読み取るには、pdf リーダーまたはオフィスが必要です。ただし、最初にこれら2つをインストールする必要があります。次に、このプラグインを使用して downloaderd ファイルを開きます。ただし、このプラグインは、内部ストレージではなくローカル ストレージの場合にのみ機能します。https://github.com/markeeftb/FileOpenerのプラグイン

于 2013-08-01T10:41:17.873 に答える
0

Cordova 用のグローバル FileOpener プラグインを使用できます。すべてのタイプのファイルを開くために使用されます

http://plugins.cordova.io/#/package/fr.smile.cordova.fileopener

サポートされている拡張子

プラグインはこれらの拡張機能を管理します:

.doc、.docx、.xls、.xlsx、.rtf、.wav、.gif、.jpg、.jpeg、.png、.txt、.mpg、.mpeg、.mpe、.mp4、.avi、.ods 、.odt、.ppt、.pptx、.apk

現在、.pdf 拡張子をサポートしていません。(2014 年 9 月 25 日)

于 2014-09-02T12:10:29.277 に答える
-1

私が見たこの問題に対する洗練されていないが非常に単純な解決策は、Google docs pdf ビューアー サービスにリンクすることです。 https://docs.google.com/viewer?url=https://dl.dropboxusercontent.com/u/6731723/Beaver.pdf

もちろん、inappbrowserを使用してこのページにリンクする必要があります。そうしないと、iOS では、ユーザーは PDF ビューから戻ることができなくなります。

于 2014-09-02T12:19:22.187 に答える