Ионное чтение файла из системы и положить его на холст - PullRequest
0 голосов
/ 11 сентября 2018

Я пытаюсь прочитать файл, хранящийся в файловой системе (Android), а затем поместить содержимое на холст, используя библиотеку pdfjs, чтобы я мог представить его в поле зрения. То же самое и с системным просмотрщиком PDF, и это сработало, но мне нужно позже немного покрасить его и манипулировать, чтобы его нельзя было отобразить в программе просмотра, оно должно быть в моем приложении.

Рендеринг моего pdf-файла работает нормально, так как я проверил его в режиме прямой перезагрузки.

Ниже читаем код

readFile( pathToFile ){
    this.file.resolveLocalFilesystemUrl( pathToFile).then((fileEntry: any) => {
      fileEntry.file( (file) => {
        var reader = new FileReader();
        reader.onloadend =  (event) => {
          const x = event.target as any;
          // let sliced = x._result.slice(x._result.indexOf(',') + 1, x._result.length);
          console.log('item', x)
          console.log('item', x.result)
          console.log('buffer',new Uint8Array(x.result))
          // console.log('64', new Uint8Array(x._result));
          // const bytes = this.base64ToUint8Array(sliced)
          this.renderPDF(x.result, this.container.nativeElement, 1)
        };
        reader.readAsArrayBuffer(file);
      });
    });
  }

вот журналы: enter image description here

как вы видите, pdf1 - это последний журнал, поэтому обещание от getDocument не разрешается:

renderPDF(url, canvasContainer, scale) {
    console.log('pdf1')
    this.pdfCreator.disableWorker = true;
    this.pdfCreator
      .getDocument(url)
      .then((doc) => {
        this.doc = doc;
        console.log('pdf2')

        this.renderPages(canvasContainer, scale);
      })
      .catch(err => console.log(err))
  }

Я провел на нем два дня без разборок ...

1 Ответ

0 голосов
/ 17 сентября 2018

Я думаю, что что-то пошло не так с URL,

Не могли бы вы попробовать это

readFile( pathToFile ){
this.file.resolveLocalFilesystemUrl( pathToFile).then((fileEntry: any) => {
    fileEntry.file( (file) => {
        var reader = new FileReader();
        reader.onloadend =  (event) => {
            const x = event.target as any;
            // let sliced = x._result.slice(x._result.indexOf(',') + 1, x._result.length);
            console.log('item', x)
            console.log('item', x.result)
            console.log('buffer',new Uint8Array(x.result))
            // console.log('64', new Uint8Array(x._result));
            // const bytes = this.base64ToUint8Array(sliced)
            var blob = new Blob([new Uint8Array(x.result)], {type: 'application/pdf'});
            var url = URL.createObjectURL(blob);
            this.renderPDF(url, this.container.nativeElement, 1)
        };
        reader.readAsArrayBuffer(file);
    });
});
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...