我开发了一个功能,它采用单页 HTML,使用 htmp-pdf 包将其转换为 PDF 并上传到 firebase 存储。当我从我的电脑运行这个函数时,它需要不到 5 秒,但是当我从 firebase 函数运行它时,它最多需要 6 分钟。这是代码:
pdf.create(estadoCuenta, { orientation: 'portrait', type: 'pdf', timeout: '360000' }).toStream(function(err, stream) {
console.log('Nombre del archivo generado: ' + file.name);
stream.pipe(file.createWriteStream({
metadata: {
contentType: 'application/pdf',
metadata: {
origin: 'created by ...'
}
},
public: true,
validation: "md5"
}))
.on('error', function(err) {
console.log('error en la carga de archivo: ' + err);
})
.on('finish', function() {
// The file upload is complete.
let estadoCuentaPDF = file.name.replace('/','%2F');
console.log('estadoCuentaPDF:' + estadoCuentaPDF);
});
});
变量“estadoCuenta”包含要转换的 html。
这是我的 package.json:
{
"name": "dialogflowFirebaseFulfillment",
"description": "This is the default fulfillment for a Dialogflow agents using Cloud Functions for Firebase",
"version": "0.0.1",
"author": "xxx",
"repository": "https://yyy@bitbucket.org/zzz/www.git",
"license": "xxx",
"private": true,
"scripts": {
"start": "firebase serve --only functions:dialogflowFirebaseFulfillment",
"deploy": "firebase deploy --only functions:dialogflowFirebaseFulfillment"
},
"engines": {
"node": "10"
},
"dependencies": {
"-": "0.0.1",
"@google-cloud/firestore": "^3.7.5",
"actions-on-google": "^2.10.0",
"cors": "^2.8.5",
"dialogflow": "^1.2.0",
"dialogflow-fulfillment": "^0.6.1",
"dotenv": "^8.2.0",
"envfile": "^6.9.0",
"express": "^4.17.1",
"firebase-admin": "^8.0.0",
"firebase-functions": "^3.6.1",
"firebase-tools": "^7.4.0",
"html-pdf": "^2.2.0",
"isomorphic-fetch": "^2.2.1",
"node-env-file": "^0.1.8",
"nodejs-base64": "^1.0.3",
"nodemailer": "^6.3.0",
"pg": "^7.18.2",
"string-similarity": "^3.0.0",
"twilio": "^3.31.1",
"unirest": "^0.6.0"
}
}