Ejemplo n.º 1
0
function runMe() {
    var fileToRun = './samples/HighLevelContentContext.pdf';
    var pdfReader = hummus.createReader(fileToRun);

    // extract text for all pages
    // will return array matching pages array where each item is an array of text placements
    // each text placements is represented by an object which has the following structure:
    // {
    //      text: the text
    //      matrix: 6 numbers pdf matrix describing how the text is transformed in relation to the page (this includes position - translation)
    //      localBBox: 4 numbers box describing the text bounding box, before being transformed by matrix.
    //      globalBBox: 4 numbers box describing the text bounding box after transoformation, making it the bbox in relation to the page.
    // }
    var pagesPlacements = extractText(pdfReader);
    
    // flush the result
    console.log('pages text placements',JSON.stringify(pagesPlacements,null,2));

    // create new version of file with rectangles around the text based on extraction info
    // if it is correct will have red rectangles around every piece of text
    var pdfWriter = hummus.createWriterToModify(fileToRun,{modifiedFilePath:'./samples/test_out.pdf'});
    for(var i=0;i<pagesPlacements.length;++i) {
        var pageModifier = new hummus.PDFPageModifier(pdfWriter,i);
		var cxt = pageModifier.startContext().getContext();
        pagesPlacements[i].forEach((placement)=> {
            cxt.q();
            cxt.cm.apply(cxt,placement.matrix);
            cxt.drawRectangle(placement.localBBox[0],placement.localBBox[1],placement.localBBox[2]-placement.localBBox[0],placement.localBBox[3]-placement.localBBox[1],{color:'Red',width:1});
            cxt.Q();
        });
		pageModifier.endContext().writePage();
    }
    pdfWriter.end();
}
Ejemplo n.º 2
0
var hummus = require('hummus'),
	fillForm = require('./pdf-form-fill').fillForm;

    var writer = hummus.createWriterToModify(__dirname + '/sample-forms/OoPdfFormExample.pdf', {
			modifiedFilePath: __dirname + '/output/OoPdfFormExampleFilled.pdf'
		});

    var data = {
        "Given Name Text Box": "Eric",
        "Family Name Text Box": "Jones",
        "House nr Text Box": "someplace",
        "Address 1 Text Box": "somewhere 1",
        "Address 2 Text Box": "somewhere 2",
        "Postcode Text Box": "123456",
        "Country Combo Box": "Spain",
        "Height Formatted Field": "198",
        "Driving License Check Box": true,
        "Favourite Colour List Box": "Brown",
        "Language 1 Check Box": true,
        "Language 2 Check Box": true,
        "Language 3 Check Box": false,
        "Language 4 Check Box": false,
        "Language 5 Check Box": true,
        "Gender List Box": "Man"
    };

    fillForm(writer,data);
    writer.end();
app.get('/', function(req, res) {
    var formSchema = fillTestModel(fields);

    res.writeHead(200, {
        'Content-Type': 'application/pdf'
    });

    var hummus = require('hummus');
    var pdfWriter = hummus.createWriterToModify(
        new hummus.PDFRStreamForFile(
             './form.pdf'),
        new hummus.PDFStreamForResponse(res)
    );

    var page = new hummus.PDFPageModifier(pdfWriter, 0);

    var bodyTextFormat = {
        font: pdfWriter.getFontForFile('./Helvetica.ttf'),
        size: 8,
        color: 0x000000
    };
    var titleTextFormat = {
        font: pdfWriter.getFontForFile('./Montserrat.otf'),
        size: 14,
        color: 0x29A4BE
    };
    var checkboxFormat = {
        color: 0x29A4BE,
        type: 'fill'
    };
    var checkboxOutlineFormat = {
        color: 0x29A4BE,
        type: 'stroke',
        width: 1.5
    };
    var textboxFormat = {
        color: 0xFFFFFF,
        type: 'fill'
    };
    function writeFormText(ctx, x, y, str, format) {
        ctx.writeText(str, x, y, format);
    }

    function drawCheckbox(ctx, x, y, w, h, format) {
        ctx.drawRectangle(x, y, w, h, format);
    }

    function writeField(field) {
        if (field.type == "title") {
            //writeFormText(context, field.x, field.y, field.val, titleTextFormat);
            //ctx.drawRectangle(field.x, field.y, field.w, field.h, checkboxFormat);
        } else if (field.type == "text" && field.val != undefined) {
            writeFormText(context, field.x+bodyTextFormat.size*0.5, field.y-bodyTextFormat.size, field.val, bodyTextFormat);
        } else if (field.type == "checkbox" && field.val) {
            if (field.w <= 6 && field.h >= -6) drawCheckbox(context, field.x, field.y, field.w, field.h, checkboxFormat);
            else drawCheckbox(context, field.x, field.y, field.w, field.h, checkboxOutlineFormat);
        }
    }

    var context = page.startContext().getContext();

    for (var element in formSchema) {
        if (formSchema.hasOwnProperty(element)) writeField(formSchema[element]);
    }

    page.endContext().writePage();
    pdfWriter.end();

    res.end();

});
Ejemplo n.º 4
0
        collection.findOne({ id:retrieve }, function(err, item) {
            if (err) { return console.dir(err); }
            //WritePDF(PDFWriteLocations, req.values, '/FORMS/01_Request_For_Protective_Order.pdf', 0);

            // SUPER HACK
            var MAP = {
              firstName: "petitionerFName",
              middleName: "petitionerMName",
              lastName: "petitionerLName",
              homeStreetAddr: "petitionerAddressStreet",
              birthdate: "petitionerDOB"
            }

            if (_.has(item, 'myInfo')) {
              var mapped = _.mapKeys(item.myInfo, function (value, key) {
                return MAP[key] || key
              })
              var cityStateZip = _.chain(item)
                .pick('homeCity', 'homeState', 'homeZip')
                .values()
                .join(', ')
                .value()
              mapped['petitionerAddressCityStateZip'] = cityStateZip
              item = _.extend({}, item, mapped)
            }
            // END SUPER HACK



            res.writeHead(200, {'Content-Type': 'application/pdf'});
            var formPath = path.join(__dirname, '../FORMS/01_Request_For_Protective_Order.pdf')

            var pdfWriter = hummus.createWriterToModify(
              new hummus.PDFRStreamForFile(formPath),
              new hummus.PDFStreamForResponse(res)
            )
            /** use pdfwriter to write pdf content **/
            var pageModifier = new hummus.PDFPageModifier(pdfWriter, 0);
            var pageModifierContext = pageModifier.startContext().getContext();

            _.chain(item)
              .map(function(text, key){
                var position = PDFWriteLocations[key]
                return _.extend({}, {text: text}, position)
              })
              .forEach(function(value, key) {
                var text = value.text
                var x = value.x
                var y = value.y
                pageModifierContext.writeText(text, x, y, {
                  font: pdfWriter.getFontForFile('./fonts/arial.ttf'),
                  size: 12,
                  colorspace: 'gray',
                  color: 0x00
                })
              })
              .value()
            // for (var p in item) {
            //   console.log(item[p].value, item[p].x, item[p].y);
            //     pageModifierContext.writeText(
            //         item[p].value,
            //         item[p].x, item[p].y,
            //         {font: pdfWriter.getFontForFile('./fonts/arial.ttf'), size: 8, colorspace: 'gray', color: 0x00}
            //     );
            // }

            pageModifier.endContext().writePage();
            pdfWriter.end();


            res.end();
        });
Ejemplo n.º 5
0
var hummus = require('hummus'),
    fillForm = require('./pdf-form-fill').fillForm;

    var writer = hummus.createWriterToModify(__dirname + '/sample-forms/g-28.pdf', {
            modifiedFilePath: __dirname + '/output/g-28-filled.pdf',
            log: __dirname + '/output/g-28-filled.log'
		});

    var data = {
        "form1[0].#subform[0].Pt1Line2b_GivenName[0]":"Gal"
    };

    fillForm(writer,data, {
        defaultTextOptions: {
            font: writer.getFontForFile(__dirname + '/sample-forms/courierb.ttf'),
            size: 10,
            colorspace: 'gray',
            color: 0,
        },
        debug:false
    });
    writer.end();