4

Base64 文字列を指定して PDF をダウンロードできるようにしようとしています。「react-native-view-pdf」を使用して PDF を表示できます。実際にファイルをダウンロードする方法がわかりません。これは、android と ios で機能する必要があります。

私はさまざまなフォーラムを試しましたが、悲しいことにどこにも行きません。

注: this.props.pdf は Base64 文字列です。

試行 1)

var path = RNFetchBlob.fs.dirs.DocumentDir + "/bill.pdf";
RNFetchBlob.fs.writeFile(path, this.props.pdf, "base64").then(res => {
  console.log("File : ", res);
});

試行 2)

RNFetchBlob.config({
  fileCache : true,
  appendExt : 'pdf'
})
.fetch('GET',`${this.props.PDFLink}`)
.then((res) => {
  // open the document directly
  if(Platform.OS == "ios"){
  RNFetchBlob.ios.previewDocument(res.path())
  }
  else{
    RNFetchBlob
    .config({
        addAndroidDownloads : {
            useDownloadManager : true, // <-- this is the only thing required
            // Optional, override notification setting (default to true)
            notification : false,
            // Optional, but recommended since android DownloadManager will fail when
            // the url does not contains a file extension, by default the mime type will be text/plain
            mime : 'application/pdf',
            description : 'File downloaded by download manager.'
        }
    })
    .fetch('GET',`${this.props.PDFLink}`)
    .then((resp) => {
      // the path of downloaded file
      resp.path()
    })
  }
})
.catch(error => {
  console.error(error);
});

画面が読み込まれると、ユーザーが PDF をダウンロードできることを期待しています。私はすでにそれをユーザーに表示していますが、ファイルをダウンロードできるようにしたいだけです。

4

1 に答える 1