PDF Filler 2 (Node.js) Forked from pdffillerjs/pdffiller Currently in development!
A node.js PDF form field data filler and FDF generator toolkit. This essentially is a wrapper around the PDF Toolkit library PDF ToolKit.
First, run npm install pdffiller --save
for your app.
Import the module using:
var pdfFiller = require('pdffiller');
// ...
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.
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" : ""
};
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"
};
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"
};