Tomasz,
Below is an XAgent to goes in a page in the beforeRenderResponse. Set the Xpage not to render than call it. It should open up a PDF with the name you want. It will have to have a .pdf extension for the browser to recognize it. The below is from a project I'm working on right now, so it brings over a pre-existing PDF and puts a table in a location, you should be able to adjust as needed.
You can get to the XAgent (well, what I do) is create a button and have it open the XAgent Xpage. Is that your question?
Cheers,
Brian
var jsLog:NotesLog = session.createLog("JavaScript");
jsLog.openNotesLog(database.getServer(),"AgentLog.nsf");
jsLog.logAction("XAgent started");
importPackage(com.itextpdf);
importPackage(java.io);
//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=\"NameyourPDFwillhave.pdf\"");
jsLog.logAction(document1.getNoteID());
// Setup the PDF Output Stream
var newPDF:com.itextpdf.text.Document = new com.itextpdf.text.Document();
var writer = com.itextpdf.text.pdf.PdfWriter.getInstance(newPDF,response.getOutputStream())
newPDF.setMargins(20f, 30f, 50f, 200f);
newPDF.open();
newPDF.newPage();
jsLog.logAction('before try');
try {
var settings:NotesView = database.getView("luASK");
var setting:NotesDocument = settings.getDocumentByKey("Reg\\NameFormFields", true);
if (setting!=null){
jsLog.logAction('in try');
var file:NotesEmbeddedObject = setting.getAttachment("NameFormFields.pdf");
var is:InputStream = file.getInputStream();
var reader:com.itextpdf.text.pdf.PdfReader = new com.itextpdf.text.pdf.PdfReader(is);
var os2:ByteArrayOutputStream = new ByteArrayOutputStream();
var stamper:com.itextpdf.text.pdf.PdfStamper = new com.itextpdf.text.pdf.PdfStamper(reader, os2);
var form:AcroFields = stamper.getAcroFields();
var table = new com.itextpdf.text.pdf.PdfPTable(1);
var widths:float= (550f);
table.setTotalWidth(widths);
table.setLockedWidth(true);
var varx:int = 35;
var vary:int = 287;
var cell = new com.itextpdf.text.pdf.PdfPCell(new com.itextpdf.text.Paragraph('here is text in the cell'));
cell.setFixedHeight(144f);
cell.setBorder(0);
table.addCell(cell);
//jsLog.logAction("before writing to table");
var cb:com.itextpdf.text.pdf.PdfContentByte = writer.getDirectContent();
table.writeSelectedRows(0, -1, varx, vary, cb);
stamper.setFormFlattening(true);
stamper.close();
var reader2:com.itextpdf.text.pdf.PdfReader = new com.itextpdf.text.pdf.PdfReader(os2.toByteArray());
var page:com.itextpdf.text.pdf.PdfImportedPage = writer.getImportedPage(reader2, 1);
cb.addTemplate(page, 0, 0);
is.close();
file.recycle(); //removes it from temp directory!
newPDF.close();
writer.close();
//Put the contents in to a Notes Stream!
facesContext.responseComplete();
}
}
catch(e) {
jsLog.logAction("error: "+e);
} finally {
jsLog.logAction("in finally");
jsLog.close();
}