UNPKG

utf8-fdf-generator

Version:

Generates FDF (PDF form input) files with UTF-8 support.

49 lines (40 loc) 2.08 kB
var fs = require('fs'); var Iconv = require('iconv').Iconv; var iconv = new Iconv('UTF-8', 'UTF-16'); exports.generator = function(data, fileName) { var header, body, footer, dataKeys; header = Buffer([]); header = Buffer.concat([ header, new Buffer("%FDF-1.2\n") ]); header = Buffer.concat([ header, new Buffer((String.fromCharCode(226)) + (String.fromCharCode(227)) + (String.fromCharCode(207)) + (String.fromCharCode(211)) + "\n") ]); header = Buffer.concat([ header, new Buffer("1 0 obj \n") ]); header = Buffer.concat([ header, new Buffer("<<\n") ]); header = Buffer.concat([ header, new Buffer("/FDF \n") ]); header = Buffer.concat([ header, new Buffer("<<\n") ]); header = Buffer.concat([ header, new Buffer("/Fields [\n") ]); footer = Buffer([]); footer = Buffer.concat([ footer, new Buffer("]\n") ]); footer = Buffer.concat([ footer, new Buffer(">>\n") ]); footer = Buffer.concat([ footer, new Buffer(">>\n") ]); footer = Buffer.concat([ footer, new Buffer("endobj \n") ]); footer = Buffer.concat([ footer, new Buffer("trailer\n") ]); footer = Buffer.concat([ footer, new Buffer("\n") ]); footer = Buffer.concat([ footer, new Buffer("<<\n") ]); footer = Buffer.concat([ footer, new Buffer("/Root 1 0 R\n") ]); footer = Buffer.concat([ footer, new Buffer(">>\n") ]); footer = Buffer.concat([ footer, new Buffer("%%EOF\n") ]); dataKeys = Object.keys(data); body = new Buffer([]); for(var i=0; i<dataKeys.length; i++) { var name = dataKeys[i]; var value = data[name]; body = Buffer.concat([ body, new Buffer("<<\n") ]); body = Buffer.concat([ body, new Buffer("/T (") ]); body = Buffer.concat([ body, iconv.convert(name.toString()) ]); body = Buffer.concat([ body, new Buffer(")\n") ]); body = Buffer.concat([ body, new Buffer("/V (") ]); body = Buffer.concat([ body, iconv.convert(value.toString()) ]); body = Buffer.concat([ body, new Buffer(")\n") ]); body = Buffer.concat([ body, new Buffer(">>\n") ]); } fs.writeFileSync(fileName, Buffer.concat([ header, body, footer ])); }