导入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://uudwc.com/A/ABMag