![Create React App Officially Deprecated Amid React 19 Compatibility Issues](https://cdn.sanity.io/images/cgdhsj6q/production/04fa08cf844d798abc0e1a6391c129363cc7e2ab-1024x1024.webp?w=400&fit=max&auto=format)
Security News
Create React App Officially Deprecated Amid React 19 Compatibility Issues
Create React App is officially deprecated due to React 19 issues and lack of maintenance—developers should switch to Vite or other modern alternatives.
pdffiller-stream
Advanced tools
Take an existing PDF Form and data and PDF Filler will create a new PDF with all given fields populated.
This is a fork of the pdf-filler package, modified to return promises and readable streams, by piping data in/out of a spawned pdftk process instead of temporarily writing files to disk.
The goal is cleaner integration, in eg. a microservices context, where it is preferable not to write multiple temporary files to disk and where you may wish to stream the generated pdf directly to a service like AWS.
A node.js PDF form field data filler and FDF generator toolkit. This essentially is a wrapper around the PDF Toolkit library PDF ToolKit.
You must first have pdftk
(from pdftk-server, found here) installed correctly on your platform.
Then, install this library:
npm install pdffiller-stream --save
Note for MacOS / OSX Developers - the main pdftk
package for OSX is currently broken as of OS 10.11, but PDFLabs released an alternative build that should work normally on the platform: https://www.pdflabs.com/tools/pdftk-the-pdf-toolkit/pdftk_server-2.02-mac_osx-10.11-setup.pkg
import pdfFiller from 'pdffiller-stream';
const sourcePDF = "test/test.pdf";
const data = {
"last_name" : "John",
"first_name" : "Doe",
"date" : "Jan 1, 2013",
"football" : "Off",
"baseball" : "Yes",
"basketball" : "Off",
"hockey" : "Yes",
"nascar" : "Off"
};
pdfFiller.fillForm( sourcePDF, data)
.then((outputStream) => {
// use the outputStream here;
// will be instance of stream.Readable
}).catch((err) => {
console.log(err);
});
This will take the test.pdf, fill the fields with the data values and stream a filled in, read-only PDF.
You can use the returned stream to write a file to disk using a standard library like fs.createWriteStream(desination)
, or send it directly to a service like AWS (which accepts streams as input).
A chainable convenience method toFile
is attached to the response, if you simply wish to write the stream to a file with no fuss:
pdfFiller.fillForm( sourcePDF, data)
.toFile('outputFile.PDF')
.then(() => {
// your file has been written
}).catch((err) => {
console.log(err);
});
Calling fillFormWithFlatten()
with shouldFlatten = false
will leave any unmapped fields still editable, as per the pdftk
command specification.
const shouldFlatten = false;
pdfFiller.fillFormWithFlatten(sourcePDF, data, shouldFlatten)
.then((outputStream) {
// etc, same as above
})
import pdfFiller from 'pdffiller-stream';
const sourcePDF = "test/test.pdf";
// Override the default field name regex. Default: /FieldName: ([^\n]*)/
const nameRegex = null;
const FDF_data = pdfFiller.generateFDFTemplate(sourcePDF, nameRegex).then((fdfData) => {
console.log(fdfData);
}).catch((err) => {
console.log(err);
});
This will print out this
{
"last_name" : "",
"first_name" : "",
"date" : "",
"football" : "",
"baseball" : "",
"basketball" : "",
"hockey" : "",
"nascar" : ""
}
import pdfFiller from 'pdffiller-stream';
const conversionMap = {
"lastName": "last_name",
"firstName": "first_name",
"Date": "date",
"footballField": "football",
"baseballField": "baseball",
"bballField": "basketball",
"hockeyField": "hockey",
"nascarField": "nascar"
};
const FormFields = {
"lastName" : "John",
"firstName" : "Doe",
"Date" : "Jan 1, 2013",
"footballField" : "Off",
"baseballField" : "Yes",
"bballField" : "Off",
"hockeyField" : "Yes",
"nascarField" : "Off"
};
pdfFiller.mapForm2PDF(data, convMap).then((mappedFields) => {
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"
}
import pdfFiller from 'pdffiller-stream';
const 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
}
];
const FDFData = pdfFiller.convFieldJson2FDF(data);
console.log(FDFData)
This will print out:
{
"last_name" : "John",
"first_name" : "Doe",
"date" : "Jan 1, 2013",
"football" : "Off",
"baseball" : "Yes",
"basketball" : "Off",
"hockey" : "Yes",
"nascar" : "Off"
};
FAQs
Take an existing PDF Form and data and PDF Filler will create a new PDF with all given fields populated.
We found that pdffiller-stream demonstrated a not healthy version release cadence and project activity because the last version was released a year ago. It has 1 open source maintainer collaborating on the project.
Did you know?
Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.
Security News
Create React App is officially deprecated due to React 19 issues and lack of maintenance—developers should switch to Vite or other modern alternatives.
Security News
Oracle seeks to dismiss fraud claims in the JavaScript trademark dispute, delaying the case and avoiding questions about its right to the name.
Security News
The Linux Foundation is warning open source developers that compliance with global sanctions is mandatory, highlighting legal risks and restrictions on contributions.