I am having a strange problem with iText and acrofields. I created a PDF and added the acrofields. Now when I do form.setField ('a field name', "a value") and I display or print the PDF, the value gets duplicated (once in smaller font and once in the intended font for that document). I checked the structure of the document and it doesn't look that my Acrofield are duplicated. What could be the cause of this
Thanks in advance
Pascal
Please find link here: https://drive.google.com/file/d/0B8O5n5QFSSNrSGVlNllOcEJHRzQ/edit?usp=sharing
I am on Ubuntu. Maybe that's why! I am using evince to look at the file, however I get the same result when I print it. I included a screenshot of what I see. https://drive.google.com/file/d/0B8O5n5QFSSNrWXJyY2VpSkt5NE0/edit?usp=sharing When I say duplicated, I should say shadowed. The value of the field is first displayed without font styling then overwritten with the required font.
The code I showed is pretty straightforward. The 2 arrrays are the name of the fields and their associated values. If the value is xxxx I set the field value to its index in that array. As you can see on the screenshot it gets shadowed too. My printout looks exactly like the screenshot. I haven't tried it yet on another platform.
Here is the code written in groovy
File mergeForm (String path, Map fields, Map values, String newFile) {
println "Merge Form: $path"
def file = grailsApplication.mainContext.getResource(path)?.inputStream
if (file == null)
return null
def reader = new PdfReader(file)
def stamper = new PdfStamper(reader, new FileOutputStream(newFile))
def form = stamper.getAcroFields()
fields.eachWithIndex { k, v, i ->
def val = ""
if (v instanceof Closure) {
val = v(values)
}
else if (v == '_xxxx_') {
val = "${i + 1}"
}
else if (values[v]) {
val = values."$v"
}
println "setting value[$i]: ${val} to: $k"
form.setField (k, val)
}
stamper.close()
return new File (newFile)
}