This should do the trick. At least it works with iText-2.1.3.jar
I'm sure you can modify this code to fit your need.
function printPdf() {
// Load the java packages
importPackage(com.lowagie);
importPackage(java.io);
//READING IMAGE -->
var imagedoc:NotesDocument;
imagedoc = database.getView("(images)").getDocumentByKey("logo");
if (imagedoc==null) {
return "";
}
var numattachments = session.evaluate("@Attachments", imagedoc).elementAt(0);
var logo:boolean = false;
var data2;
if (numattachments==1) {
logo = true;
var v = session.evaluate("@AttachmentNames", imagedoc).elementAt(0);
var is2 = imagedoc.getAttachment(v).getInputStream();
var bos2 = new ByteArrayOutputStream();
var buf2 = new byte[1024];
var len2 = 0;
while ((len2= is2.read(buf2)) > 0) {
bos2.write(buf2, 0, len2);
}
data2 = bos2.toByteArray();
bos2.flush();
is2.close();
}
var image:com.lowagie.text.Image;
if (logo) {
image = new com.lowagie.text.Image.getInstance(data2);
image.setAbsolutePosition(350,120);
image.scaleToFit(100,210);
}
//<--READING IMAGE
var templatedoc = database.getView("(pdftemplates)").getDocumentByKey("offer");
//Initialization
var con = facesContext.getExternalContext();
var response:com.ibm.xsp.webapp.XspHttpServletResponse = con.getResponse();
//setting response headers for browser to recognize data
response.setContentType("application/pdf");
response.setHeader("Cache-Control", "no-cache");
response.setDateHeader("Expires", -1);
response.setHeader( "Content-Disposition", "attachment; filename=\"offer.pdf\"" );
var pdfdoc:com.lowagie.text.Document = new com.lowagie.text.Document();
var os = new ByteArrayOutputStream();
var copy:com.lowagie.text.pdf.PdfSmartCopy = new com.lowagie.text.pdf.PdfSmartCopy(pdfdoc, os);
pdfdoc.open();
//TESTING ->
pdfdoc.addCreationDate();
pdfdoc.addCreator("my test");
pdfdoc.addTitle("Offer");
// <-TESTING
var is = templatedoc.getAttachment("template.pdf").getInputStream();
var bos = new ByteArrayOutputStream();
var buf = new byte[1024];
var len = 0;
while ((len= is.read(buf)) > 0) {
bos.write(buf, 0, len);
}
var data = bos.toByteArray();
bos.flush();
is.close();
var reader:com.lowagie.text.pdf.PdfReader = new com.lowagie.text.pdf.PdfReader(data); //reading template to memory
var baos = new ByteArrayOutputStream();
var stamper:com.lowagie.text.pdf.PdfStamper = new com.lowagie.text.pdf.PdfStamper(reader, baos);
var form:com.lowagie.text.pdf.AcroFields = stamper.getAcroFields();
form.setField("testfield", "testing only");
//ADDING IMAGE -->
if (logo) {
var content:com.lowagie.text.pdf.PdfContentByte;
//content = stamper.getOverContent(reader.getNumberOfPages());
content = stamper.getOverContent(1);
content.addImage(image);
}
//<--ADDING IMAGE
stamper.setFormFlattening(true); //setting fields to readonly
stamper.close();
var tmppage:com.lowagie.text.pdf.PdfReader = new com.lowagie.text.pdf.PdfReader(baos.toByteArray());
var numpages = tmppage.getNumberOfPages();
for (i=1;i<=numpages;i++)
{
copy.addPage(copy.getImportedPage( tmppage, i));
}
tmppage.close();
baos.flush();
baos.close();
reader.close();
pdfdoc.close();
copy.close();
var rder =response.getOutputStream();
os.writeTo(rder);
os.reset();
templatedoc.recycle();
facesContext.responseComplete();
}
p.s.
Next time please post errors that prevented example to work, because it'll help others and also proofs that you really tried :)