Pdffiller
Take an existing PDF Form and data and PDF Filler will create a new PDF with all given fields populated.
Install / Use
/learn @pdffillerjs/PdffillerREADME
PDF Filler (Node.js)
A node.js PDF form field data filler and FDF generator toolkit. This essentially is a wrapper around the PDF Toolkit library <a target="_blank" href="http://www.pdflabs.com/tools/pdftk-the-pdf-toolkit/">PDF ToolKit</a>.
Quick start
First, run npm install pdffiller --save for your app.
Import the module using:
var pdfFiller = require('pdffiller');
// ...
Examples
1.Fill PDF with existing FDF Data
var pdfFiller = require('pdffiller');
var sourcePDF = "test/test.pdf";
var destinationPDF = "test/test_complete.pdf";
var data = {
"last_name" : "John",
"first_name" : "Doe",
"date" : "Jan 1, 2013",
"football" : "Off",
"baseball" : "Yes",
"basketball" : "Off",
"hockey" : "Yes",
"nascar" : "Off"
};
pdfFiller.fillForm( sourcePDF, destinationPDF, data, function(err) {
if (err) throw err;
console.log("In callback (we're done).");
});
This will take the test.pdf, fill the fields with the data values and create a complete filled in PDF (test_filled_in.pdf). Note that the resulting PDF will be read-only.
Alternatively,
var shouldFlatten = false;
pdfFiller.fillFormWithFlatten( sourcePDF, destinationPDF, data, shouldFlatten, function(err) {
if (err) throw err;
console.log("In callback (we're done).");
})
Calling
fillFormWithFlatten() with shouldFlatten = false will leave any unmapped fields
still editable, as per the pdftk command specification.
2. Generate FDF Template from PDF
var pdfFiller = require('pdffiller');
var sourcePDF = "test/test.pdf";
// Override the default field name regex. Default: /FieldName: ([^\n]*)/
var nameRegex = null;
var FDF_data = pdfFiller.generateFDFTemplate( sourcePDF, nameRegex, function(err, fdfData) {
if (err) throw err;
console.log(fdfData);
});
This will print out this
{
"last_name" : "",
"first_name" : "",
"date" : "",
"football" : "",
"baseball" : "",
"basketball" : "",
"hockey" : "",
"nascar" : ""
};
3. Map form fields to PDF fields
var pdfFiller = require('pdffiller');
var convMap = {
"lastName": "last_name",
"firstName": "first_name",
"Date": "date",
"footballField": "football",
"baseballField": "baseball",
"bballField": "basketball",
"hockeyField": "hockey",
"nascarField": "nascar"
};
var fieldJson = [
{
"title" : "lastName",
"fieldfieldType": "Text",
"fieldValue": "John"
},
{
"title" : "firstName",
"fieldfieldType": "Text",
"fieldValue": "Doe"
},
{
"title" : "Date",
"fieldType": "Text",
"fieldValue": "Jan 1, 2013"
},
{
"title" : "footballField",
"fieldType": "Button",
"fieldValue": false
},
{
"title" : "baseballField",
"fieldType": "Button",
"fieldValue": true
},
{
"title" : "bballField",
"fieldType": "Button",
"fieldValue": false
},
{
"title" : "hockeyField",
"fieldType": "Button",
"fieldValue": true
},
{
"title" : "nascarField",
"fieldType": "Button",
"fieldValue": false
}
];
var mappedFields = pdfFiller.mapForm2PDF( fieldJson, convMap );
console.log(mappedFields);
This will print out the object below.
{
"last_name" : "John",
"first_name" : "Doe",
"date" : "Jan 1, 2013",
"football" : "Off",
"baseball" : "Yes",
"basketball" : "Off",
"hockey" : "Yes",
"nascar" : "Off"
};
4. Convert fieldJson to FDF data
var pdfFiller = require('pdffiller');
var fieldJson = [
{
"title" : "last_name",
"fieldfieldType": "Text",
"fieldValue": "Doe"
},
{
"title" : "first_name",
"fieldfieldType": "Text",
"fieldValue": "John"
},
{
"title" : "date",
"fieldType": "Text",
"fieldValue": "Jan 1, 2013"
},
{
"title" : "football",
"fieldType": "Button",
"fieldValue": false
},
{
"title" : "baseball",
"fieldType": "Button",
"fieldValue": true
},
{
"title" : "basketball",
"fieldType": "Button"
"fieldValue": false
},
{
"title" : "hockey",
"fieldType": "Button"
"fieldValue": true
},
{
"title" : "nascar",
"fieldType": "Button"
"fieldValue": false
}
];
var FDFData = pdfFiller.convFieldJson2FDF( fieldJson );
console.log(FDFData)
This will print out this
{
"last_name" : "John",
"first_name" : "Doe",
"date" : "Jan 1, 2013",
"football" : "Off",
"baseball" : "Yes",
"basketball" : "Off",
"hockey" : "Yes",
"nascar" : "Off"
};
Related Skills
node-connect
349.2kDiagnose OpenClaw node connection and pairing failures for Android, iOS, and macOS companion apps
frontend-design
109.5kCreate distinctive, production-grade frontend interfaces with high design quality. Use this skill when the user asks to build web components, pages, or applications. Generates creative, polished code that avoids generic AI aesthetics.
openai-whisper-api
349.2kTranscribe audio via OpenAI Audio Transcriptions API (Whisper).
qqbot-media
349.2kQQBot 富媒体收发能力。使用 <qqmedia> 标签,系统根据文件扩展名自动识别类型(图片/语音/视频/文件)。

