如何将新创建的PDF发送到浏览器?

时间:2018-08-30 23:48:34

标签: javascript pdf

我正在使用pdf包创建交易收据的pdf。

我可以使用终端在我的文件夹中生成pdf,但是我试图通过html单击在浏览器中生成pdf。

我认为我必须执行api路由,但不确定。有什么建议吗?

var sys = require('sys');
var fs = require('fs');
var pdf = require('pdf').pdf;
var moment = require('moment');
var Decimal = require('decimal');

/* create the PDF document */
var item = "Vinyl";
var numItem = 3
var price = Decimal(30.00);
var subTotal = Decimal(numItem).mul(price).toNumber();
var tax = Decimal(.07).mul(subTotal).toNumber();
var total = tax + subTotal;

var doc = new pdf();
doc.text(80, 20, 'Transaction Reciept' );
doc.text(80, 30, 'Hot Drop Vinyl Shop');
doc.text(70, 40, moment().format('MMMM Do YYYY, h:mm:ss a'));
doc.text(50, 60, 'Item(s): ' + item);
doc.text(50, 70, 'Quantity: ' + numItem);
doc.text(50, 80, 'Price: $' + price);
doc.text(50, 90, 'Subtotal: $' + subTotal);
doc.text(50, 100, 'Tax: $' + tax);
doc.text(50, 110, 'Total: $' + total);


/* optional - set properties on the document */
doc.setProperties({
title: 'Transaction Reciept',
subject: 'Reciept for Transactions at Vinyl Shop',      
author: 'Group 6',
keywords: 'Vinyl Shop, Coding Bootcamp',
creator: 'pdf.js'
});

var fileName = "testFile"+new Date().getSeconds()+".pdf";

fs.writeFile(fileName, doc.output(), function(err, data){
sys.puts(fileName +' was created! great success!');
});

//send file to browser 

1 个答案:

答案 0 :(得分:1)

这取决于您要实现的目标。您可以签出pdfmakehttps://www.npmjs.com/package/pdfmake)或jsPDF,这些都是直接在浏览器中生成pdf的良好库。

但是,如果这不能满足您的需求,那么是的,您将不得不使用express之类的节点Web框架来创建用于生成pdf并将其发送到浏览器的api路由。