21xrx.com
2024-05-20 20:36:03 Monday
登录
文章检索 我的文章 写文章
使用Node.js模板引擎渲染PDF文件
2023-07-13 20:29:04 深夜i     --     --
Node js 模板引擎 渲染 PDF文件

Node.js是一种使用JavaScript构建高性能应用程序的开源跨平台运行环境。在Web开发领域,Node.js被广泛应用于服务器端开发,但是它也可以用于其他用途,如生成PDF文件。使用模板引擎,可以将数据与自定义模板相结合以渲染PDF文件。

在Node.js中,有许多模板引擎可供选择。其中一些最流行的包括EJS,Handlebars和Mustache。这些模板引擎允许我们定义一个模板文件,其中包含HTML和JavaScript代码。然后,我们可以使用JavaScript对象将数据传递给模板引擎以渲染最终文档。通常,此数据来自数据库或服务器端API。

要在Node.js中生成PDF文件,我们可以使用一个叫做Puppeteer的库。它是实现了Google Chrome Headless浏览器所需的API,可以让我们渲染HTML内容并生成PDF或图像。它可以是互动的,就像一个完整的浏览器一样,但我们不需要在屏幕上显示页面。

在Node.js中,我们可以使用Puppeteer将渲染的HTML转换为PDF文档。为了从模板创建HTML文档,我们可以使用模板引擎,根据数据生成HTML代码。接下来,使用Puppeteer对HTML进行渲染,将其转换为PDF文件。

以下是使用EJS作为模板引擎并将其与Puppeteer结合使用渲染PDF文件的基本代码示例:


const puppeteer = require('puppeteer');

const ejs = require('ejs');

const fs = require('fs');

async function generatePDF(data) {

 const browser = await puppeteer.launch();

 const page = await browser.newPage();

 const template = fs.readFileSync('template.ejs', 'utf-8');

 const html = ejs.render(template, data);

 await page.setContent(html, { waitUntil: 'networkidle2' });

 const pdfBuffer = await page.pdf({ format: 'A4' });

 await browser.close();

 return pdfBuffer;

}

// 使用 generatePDF 函数,并将结果保存到文件

const data = World!';

const pdfBuffer = await generatePDF(data);

fs.writeFile('output.pdf', pdfBuffer, (error) => {

 if (error) {

  console.error(error);

 } else {

  console.log('PDF successfully generated!');

 }

});

上面的代码示例使用EJS模板引擎和Puppeteer来生成PDF文件。我们首先使用Node.js的文件系统模块(fs)读取模板文件,然后使用EJS渲染模板,得到HTML代码。接下来,我们使用Puppeteer打开一个新页面,将HTML内容添加到页面中并进行渲染。最后,使用Puppeteer的pdf()函数生成PDF文件。这个PDF文件是二进制的,我们可以将其保存到文件系统。

总之,在Node.js中使用模板引擎和Puppeteer可以轻松地生成PDF文件。这是一个非常有用的功能,可以用于生成各种类型的文档,如报告、合同和发票。无论在Web开发还是其他领域中,都可以使用Node.js和PDF生成技术来提高效率并简化复杂任务。

  
  

评论区

{{item['qq_nickname']}}
()
回复
回复