PDF в JSON с использованием pdf2 json и функций Firebase - PullRequest
0 голосов
/ 29 марта 2020

Я пытаюсь выбрать pdf-файл, используя файл, введенный в Angular 9, используйте FileReader, чтобы прочитать этот файл как текст, а затем отправить его в функцию firebase, где я использую pdf2 json, чтобы преобразовать его в json для создания нового PDF.

Как только ввод файла изменяется, в Angular вызывается следующая функция, чтобы прочитать его в текст и запустить процесс.

createSheets($event) {
    const file = $event.target.files[0];
    const fileName = file.name;
    const fileType = file.type;
    const fileReader = new FileReader();
    fileReader.onload = (e) => {
      const createSheet = this.aff.httpsCallable('createSheets');
      console.log(fileReader.result);
      createSheet({'data': fileReader.result}).subscribe((response) => {
        console.log(response);
      }, err => {
        console.log('error', err);
    })
  }
  const data = fileReader.readAsText(file);
}

Это вызывает функцию firebase, которая с теперь я ожидаю получить JSON содержимое обратно, но вместо этого функция возвращает ошибку, которая сообщает XRefParseException в XRefParseExceptionClosure.

import * as functions from 'firebase-functions';

const fs = require('fs');
const path = require('path');
const os = require('os');
const PDFParser = require('pdf2json');

const pdfParser = new PDFParser();

export const createSheets = functions.https.onCall((data, context) => {
  return new Promise((resolve, reject) => {
    if(data) {

      const localPdfFile = path.join(os.tmpdir(), 'localPdfFile.pdf');

      pdfParser.on("pdfParser_dataError", ((errData:any) => {
        console.log(errData);
        reject(errData);
      }));

      pdfParser.on("pdfParser.dataReady", ((pdfData:any) => {
        resolve(pdfData);
      }));

      fs.writeFile(localPdfFile, data.data, (() => {
        fs.readFile(localPdfFile, (err:any, pdfBuffer:any) => {
          if(err) {
            reject(err);
          } else {
            console.log(pdfBuffer);
            pdfParser.parseBuffer(pdfBuffer);
          }
        });
      }));

    } else {
      reject('no data');
    }
  }).then((response) => {
    return { response: response };
  }).catch((error) => {
    throw new functions.https.HttpsError('unknown', error);
  });
});

Точные сообщения об ошибках приведены ниже:

Ошибка Сообщение 1

(while reading XRef): Error: Invalid XRef stream header

Сообщение об ошибке 2

XRefParseException
    at XRefParseExceptionClosure (eval at <anonymous> (/srv/node_modules/pdf2json/lib/pdf.js:64:1), <anonymous>:379:34)
    at eval (eval at <anonymous> (/srv/node_modules/pdf2json/lib/pdf.js:64:1), <anonymous>:384:3)
    at Object.<anonymous> (/srv/node_modules/pdf2json/lib/pdf.js:64:1)
    at Module._compile (module.js:653:30)
    at Object.Module._extensions..js (module.js:664:10)
    at Module.load (module.js:566:32)
    at tryModuleLoad (module.js:506:12)
    at Function.Module._load (module.js:498:3)
    at Module.require (module.js:597:17)
    at require (internal/module.js:11:18)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...