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

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

作者: R_X | 来源:发表于2023-03-28 14:03 被阅读0次
    • 后端: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);
                })
            }
        }
    

    相关文章

      网友评论

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

          本文链接:https://www.haomeiwen.com/subject/txztddtx.html