Я пытаюсь выбрать 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)