Ошибка: Uncaught (в обещании): [объект объекта] с плагином Ionic собственного файла - PullRequest
0 голосов
/ 06 ноября 2018

Мне нужно создать PDF, используя blob, и я подписался на этот блог . Но это не работает. Можете ли вы сказать мне, почему?

Примечание. В этой строке выдается ошибка const fileEntry = await. Это на android device. В браузере работает нормально (т.е. this.pdfObj.download();).

  constructor(
    private file: File,
    private platform: Platform,
    private fileOpener: FileOpener,
  ) {
  }

downloadReport() {
    this.createPdf();
    if (this.platform.is('cordova')) {
      try {
        this.pdfObj.getBuffer(async (buffer) => {
          var utf8=new Uint8Array(buffer);
          var binaryArray=utf8.buffer;
          var blob = new Blob([binaryArray], { type: 'application/pdf' });

          const fileEntry = await this.file.writeFile(this.file.dataDirectory, 'myletter.pdf', blob, { replace: true });
          this.fileOpener.open(this.file.dataDirectory + 'myletter.pdf', 'application/pdf');
        });
      }
      catch (err) {
        console.log(err);
      }

    } else {
      // On a browser simply use download!
      this.pdfObj.download();
    }
  }  



createPdf() {
    var docDefinition = {
      content: [
        { text: 'REMINDER', style: 'header' },
        { text: new Date().toTimeString(), alignment: 'right' },

        { text: 'From', style: 'subheader' }, { text: 'from' },

        { text: 'To', style: 'subheader' }, 'To',

        { text: 'Sam lokuge', style: 'story', margin: [0, 20, 0, 20] },

        {
          ul: [
            'Bacon',
            'Rips',
            'BBQ',
          ]
        }
      ],
      styles: {
        header: {
          fontSize: 18,
          bold: true,
        },
        subheader: {
          fontSize: 14,
          bold: true,
          margin: [0, 15, 0, 0]
        },
        story: {
          italic: true,
          alignment: 'center',
          width: '50%',
        }
      }
    }
    this.pdfObj = pdfMake.createPdf(docDefinition);
  }

Это ошибка:

 core.js:1350 ERROR Error: Uncaught (in promise): [object Object]
        at c (polyfills.js:3)
        at polyfills.js:3
        at rejected (assessment-report.module.ts:13)
        at t.invoke (polyfills.js:3)
        at Object.onInvoke (core.js:4629)
        at t.invoke (polyfills.js:3)
        at r.run (polyfills.js:3)
        at polyfills.js:3
        at t.invokeTask (polyfills.js:3)
        at Object.onInvokeTask (core.js:4620)

1 Ответ

0 голосов
/ 07 ноября 2018

Я нашел проблему здесь. Это было связано с этим путем this.file.dataDirectory. Но сообщение об ошибке не было четко упомянуто об этом. Таким образом, потребовалось много времени, чтобы определить проблему. Наконец, я изменил путь, и тогда никаких проблем. Я использовал этот путь this.file.externalApplicationStorageDirectory, и теперь он работает нормально.

...