It needs PDF software that makes it possible to import (data)fields into a PDF form and to import and export fields data. I used the pro version of PDF Studio.
It also needs a Google Spreadsheet-sheet with a first row with 'fieldnames'.
I imported (data)fields (the Google Spreadsheet-sheet fieldnames) into a PDF form.
To learn how to import data into the (data)fields of the PDF-form I first had to export data into a xfdf-file (the export option I choose for).
The (xml-like) xfdf-file has a head, a trunk and a tail,
The head contains (among other things) the name of the PDF file and a modified-something and a original something.
The trunk contains information about the fieldnames and the values.
The tail contains ... the tail.
function pdfFormMerging(){ var ss = SpreadsheetApp.openById("XXX"); var sheet = ss.getSheetByName("YYY"); var range = sheet.getRange(1,1,sheet.getMaxRows(),sheet.getMaxColumns()); var data = range.getValues(); var uniqueAnchor = "ZZZ"; var object = {}; object = makesObjectOfRowInSpreadsheetWithUniqueAnchor(object,uniqueAnchor,data); var modified = "aaa"; var original = "bbb"; var formName = "ccc.pdf"; var fileName = "ddd.xfdf" //the head var text = '<?xml version="1.0" encoding="UTF-8"?>'; text += '<xfdf xml:space="preserve" xmlns="http://ns.adobe.com/xfdf/">'; text += '<f href="' + formName + '"/>'; text += '<ids modified="' + modified + '" original="' + original + '"/>'; text += '<fields>'; //the trunk for(var k in object){ text += '<field name="' + k + '"><value>' + object[k] + '</value></field>'; } //the tail text += '</fields>'; text += '</xfdf>'; DriveApp.createFile(fileName,text,"text/xml"); } function makesObjectOfRowInSpreadsheetWithUniqueAnchor(rowObject,uniqueAnchor,data){ var fieldNames = data[0]; for(var i=0;i<data.length;i++){ if(data[i].indexOf(uniqueAnchor) !== -1){ for(var j=0;j<fieldNames.length;j++){ if(fieldNames[j] !== ""){ rowObject[fieldNames[j]] = data[i][j]; } } } } return rowObject; }
Geen opmerkingen:
Een reactie posten