问题描述
我正在尝试使用 pdfmake 创建一个 pdf 文件,并使用 firebase trgger 电子邮件扩展将其发送给我的客户。我为此使用了 Angular(typescript)。但它不起作用。
我正在使用 Angular 11 和 pdfmake。我现在已经创建了一个代码,用于从客户端创建 pdf 并尝试获取流并发送它。我也尝试在服务器端创建,但是当我将 fs 导入为:
import * as fs from 'fs';
当我尝试执行此操作时,出现错误 fs module not found module 错误:
fs.createWriteStream(file);
此外,当我尝试从 'pdfmake' 导入 PdfPrinter 时,我收到错误,如未找到节点模块错误模块。 任何人都可以请建议一种方法来做到这一点。我已经支持这一个星期了。
我的客户端功能:
import pdfMake from "pdfmake/build/pdfmake";
import pdfFonts from "pdfmake/build/vfs_fonts";
pdfMake.vfs = pdfFonts.pdfMake.vfs;
generatePdf()(){
let docDeFinition = {
header: 'Test Mail',content: 'Trying to send mail with attachments'
}
var doc=pdfMake.createPdf(docDeFinition);
var buffers = [];
const file="save.pdf";
let p = new Promise((resolve,reject) => {
doc.on("end",function() {
resolve(buffers);
});
doc.on("error",function () {
reject();
});
});
doc.pipe(doc.getStream());
doc.on('data',buffers.push.bind(buffers));
doc=pdfMake.createPdf(docDeFinition);
var data=docDeFinition;
doc.end();
return p.then(function(buffers) {
return this.sendMail(buffers);
});
}
sendMail(buffers){
const pdfData = Buffer.concat(buffers);
this.db1.collection('mail').add({
to:"mailid@gmail.com",message:{
subject:'Testing',text:"Testing the email triggering",html:"email triggering",attachments: [
{
filename:"view.pdf",content:pdfData,},]
},}).then(()=>console.log("Message Sent"));
}
现在的错误是:doc.pipe() 和 doc.on() 不是函数
我的服务器端代码:
import * as fs from 'fs';
import * as PdfPrinter from 'pdfmake';
onEmail(){
let docDeFinition = {
header: 'Test Mail',content: 'Trying to send mail with attachments'
}
var doc=pdfMake.createPdfKitdocument(docDeFinition);
var buffers = [];
const file="save.pdf";
let p = new Promise((resolve,function () {
reject();
});
});
doc.pipe(fs.createWriteStream(file));
doc.on('data',buffers.push.bind(buffers));
doc=pdfMake.createPdfKitdocument(docDeFinition);
var data=docDeFinition;
doc.end();
return p.then(function(buffers) {
return this.sendMail(buffers);
});
}
sendMail(buffers){
const pdfData = Buffer.concat(buffers);
this.db1.collection('mail').add({
to:"mymail@gmail.com",}).then(()=>console.log("Message Sent"));
}
即使将 pdfmake 安装为 npm i --save pdfmake,现在 fs 和 pdfmake 的节点模块错误。
任何人都可以建议任何方法,即使它与任何其他 pdf 生成包的代码完全不同。
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)