xfdf

A Node.js JSON to XFDF generator

  • xfdf

Downloads in past

Stats

StarsIssuesVersionUpdatedCreatedSize
xfdf
1101.0.05 years ago9 years agoMinified + gzip package size for xfdf in KB

Readme

XFDF
A Node.js module for creating Adobe XFDF files.
Build Status

Installation

npm install xfdf
Always good to run tests
npm test

Synoptic

var xfdf = require('xfdf')

var builder = new xfdf({ pdf: 'Document.pdf' });

builder.addField('firstname', 'John');

console.log(builder.generate());

calling generate() will create:
<?xml version="1.0" encoding="UTF-8"?>
<xfdf xmlns="http://ns.adobe.com/xfdf/" xml:space="preserve">
  <f href="Document.pdf"/>
  <fields>
    <field name="firstname">
      <value>John</value>
    </field>
  </fields>
</xfdf>

Options

When constructing an xfdf builder there are several options that can be passed.
new xfdf({
  pdf: 'path/to/document.pdf',
  translateBools: true,
  format: {
    pretty: false,
    indent: '  ',
    newline: '\r\n'
  }
});

pdf

This is the location of the template pdf to be refrenced in the xfdf document.

translateBools

This will translate booleans in a javascript literal to 'Yes' or 'Off', which are used to flag checkboxes or radios in Adobe forms
default: true

format

This module uses xmlbuilder to construct the xfdf xml document. xmlbuilder has several formating options which can be specified when creating the xml document. You can see those options here
default:
pretty: true
indent: '  '
newline: '\n'

Methods

addField('fieldname', 'fieldvalue')

Will add a field to xfdf document. Argument should be a hash with two keys: name, value;
builder.addField('FieldName', 'FieldValue');

fromJSON({data})

You can use this method to pass an entire javascript literal to be consumed by the XFDF builder. Format of object should be:
{
  fields: {
    age: 32,
    tall: true,
    name: 'John Doe'
  }
}

fromJSONFile('path', callback)

Used to slurp a correctly formatted json file.
Usage: see test/resources/test.json for a properly formatted file.
builder.fromJSONFile('/path/to/data.json', function(err) {
  if ( !err ) 
    builder.generate(); 
});