Nodejs生成pdf文件流+前端通过二进制流下载pdf

该文章展示了如何利用Nodejs的pdfkit库在后端生成PDF文档,并通过axios发送响应式流到前端。前端则使用downloadjs下载这个PDF文件。示例代码包括创建PDF文档,添加文本、图形以及链接,以及处理HTTP响应的Blob类型。
摘要由CSDN通过智能技术生成
  • 后端:Nodejs + pdfkit 生成pdf
  • 前端:通过 downloadjs生成pdf文件

1、后端代码

const PDFDocument = require('pdfkit');
const fs = require('fs');
exports.createPdf = (req, res) => {
	const doc = new PDFDocument();
	// doc.pipe(fs.createWriteStream('output.pdf'));  // 在服务端生成pdf文件

	// Embed a font, set the font size, and render some text
	doc
		.fontSize(25)
		.text('Some text with an embedded font!', 100, 100);

	// Add another page
	doc
		.addPage()
		.fontSize(25)
		.text('Here is some vector graphics...', 100, 100);

	// Draw a triangle
	doc
		.save()
		.moveTo(100, 150)
		.lineTo(100, 250)
		.lineTo(200, 250)
		.fill('#FF3300');

	// Apply some transforms and render an SVG path with the 'even-odd' fill rule
	doc
		.scale(0.6)
		.translate(470, -380)
		.path('M 250,75 L 323,301 131,161 369,161 177,301 z')
		.fill('red', 'even-odd')
		.restore();

	// Add some text with annotations
	doc
		.addPage()
		.fillColor('blue')
		.text('Here is a link!', 100, 100)
		.underline(100, 100, 160, 27, { color: '#0000FF' })
		.link(100, 100, 160, 27, 'http://google.com/');

	// Finalize PDF file
	doc.pipe(res);  // 通过res 将pdf文件流返回给前端
	doc.end();
};

2、前端代码

    import axios from 'axios'
    import downloadjs from 'downloadjs';
    export default {
        mounted() {
            axios.get('http://localhost:9202/createPdf', {
                responseType: 'blob',
                headers: {
                    'Content-Type': 'application/json'
                }
            }).then(res => {
                downloadjs(res.data, 'demo.pdf', 'application/pdf');
            }).catch(err => {
                console.error(err);
            })
        }
    }
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值