nodejs根据pdf模板填入数据并生成新的pdf文件

导入pdf-lib库

npm install pdf-lib fs

具体代码

const { PDFDocument, StandardFonts } = require('pdf-lib');
const fs = require('fs');

async function fillPdfTemplate(templatePath, outputPath, fieldData) {
  const templateBytes = await fs.promises.readFile(templatePath);
  const pdfDoc = await PDFDocument.load(templateBytes);
  const form = pdfDoc.getForm();

  for (const [fieldName, fieldValue] of Object.entries(fieldData)) {
    const field = form.getTextField(fieldName);
    if (field) {
      field.setText(fieldValue);
    }
  }

  const pdfBytes = await pdfDoc.save();
  await fs.promises.writeFile(outputPath, pdfBytes);
}

// 使用示例
const templatePath = 'template.pdf'; // 模板文件路径
const outputPath = 'output.pdf'; // 输出文件路径
const fieldData = {
  'key': 'value', // 字段名和对应的值
};

fillPdfTemplate(templatePath, outputPath, fieldData)
  .then(() => {
    console.log('PDF 模板填充完成');
  })
  .catch((error) => {
    console.log('发生错误:', error);
  });

代码详解

首先

const templateBytes = await fs.promises.readFile(templatePath);
  const pdfDoc = await PDFDocument.load(templateBytes);
  const form = pdfDoc.getForm();

这三行表示读文件,并且读取pdf表单,之后在pdf的表单中寻找字段,之后填入字段

这里的Object.entries是将对象变成数组方便循环,也可以用for...in进行对象遍历

最后将数据存入新文件中

其他

pdf模板可以使用福昕pdf进行制作,百度一下都能查到

文章来源地址https://uudwc.com/A/ABMag

原文地址:https://blog.csdn.net/ArmadaDK/article/details/132456324

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请联系站长进行投诉反馈,一经查实,立即删除!

h
上一篇 2023年08月24日 05:48
Apache Paimon 实时数据湖 Streaming Lakehouse 的存储底座
下一篇 2023年08月24日 05:48