Генерация PDF при создании документа в Firebase Cloud Firestore - PullRequest
1 голос
/ 27 марта 2020

Я занимаюсь разработкой приложения, которое создает PDF на основе веб-формы.

В настоящее время я пытаюсь использовать pdfmake для генерации PDF-файлов на основе триггера создания документа пожарного хранилища

import * as functions from 'firebase-functions';
const admin = require('firebase-admin);
admin.initializeApp();
const PdfPrinter = require('pdfmake');
const fs = require('fs');

export const createPDF = functions.firestore
    .document('pdfs/{pdf}')
    .onCreate(async (snap, context) => {

        var pdfName  = context.params.pdf;
        var printer = new PdfPrinter();

        var docDefinition = {
        // Pdf Definitions
        };

        var options = {
        // Pdf Options
        };

        var pdfDoc = printer.createPdfKitDocument(docDefinition, options);
        pdfDoc.pipe(fs.createWriteStream('tempDoc.pdf'));
        await pdfDoc.end();


        // Upload to Firebase Storage
        const bucket = admin.storage().bucket('myproject.appspot.com');
        bucket.upload('tempDoc.pdf', {
            destination: pdfName + '.pdf',
        });

        return fs.unlinkSync('document.pdf');
    });

Триггер вызван, однако я получаю сообщение об ошибке «Ошибка: ENOENT: нет такого файла или каталога, статистика« document.pdf »»

Я пробовал с функцией onCreate asyn c и без.

Любая помощь очень ценится

1 Ответ

0 голосов
/ 27 марта 2020

Невозможно выполнить запись в любое место файла в облачных функциях, кроме / tmp. Если ваш код должен записать файл, он должен создавать пути из os.tmpdir(), как описано в документации :

Единственная доступная для записи часть файловой системы - это / tmp каталог, который вы можете использовать для хранения временных файлов в экземпляре функции. Это точка монтирования локального диска, известная как том «tmpfs», в котором данные, записанные на том, хранятся в памяти. Обратите внимание, что он будет использовать ресурсы памяти, выделенные для функции.

Остальная часть файловой системы доступна только для чтения и доступна для функции.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...