Попытка загрузить и открыть файл PDF -react-Native - PullRequest
0 голосов
/ 24 апреля 2020

Я пытаюсь преобразовать файл из base64 в pdf, поэтому я использую пакет RNFetchBlob, но, к сожалению, файл создан, но когда я пытаюсь открыть его, Adobe выдает мне ошибку, а также когда я пытаюсь прочитать это из другого приложения ничто не может мне помочь

 readPdf = async(item) => {
    console.log("download")
    const android = RNFetchBlob.android

    RNFetchBlob
       .config({
           fileCache: true,
           appendExt: 'pdf',
           addAndroidDownloads : {
               useDownloadManager : true, // <-- this is the only thing required
               // Optional, override notification setting (default to true)
               notification : true,

               // Title of download notification
                title : 'Great ! Download Success ! :O ',
                // Make the file scannable  by media scanner
                mediaScannable : true,
               // 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.'
           },

       })

       try {
        const granted = await PermissionsAndroid.request(
            PermissionsAndroid.PERMISSIONS.WRITE_EXTERNAL_STORAGE
        );

        if (granted === PermissionsAndroid.RESULTS.GRANTED) {
          console.log("Permission granted");

         // the path of downloaded file
         // resp.path()
         let base64Str = item;
         const fs = RNFetchBlob.fs;
         const dirs = RNFetchBlob.fs.dirs;
         const NEW_FILE_PATH = dirs.DownloadDir + '/test.pdf';

         //let pdfLocation = RNFetchBlob.fs.dirs.DocumentDir + '/' + 'test.pdf';
         android.actionViewIntent(NEW_FILE_PATH, 'application/pdf')

         console.log("pdf location"+NEW_FILE_PATH)
         RNFetchBlob.fs.writeFile(NEW_FILE_PATH, RNFetchBlob.base64.encode(base64Str), 'base64');
        }
        else {
          console.log('Permission denied');
      }
      } catch (err) {
          console.warn(err);
      }

   }
...