This forum is closed to new posts and responses. Individual names altered for privacy purposes. The information contained in this website is provided for informational purposes only and should not be construed as a forum for customer support requests. Any customer support requests should be directed to the official HCL customer support channels below:

HCL Software Customer Support Portal for U.S. Federal Government clients
HCL Software Customer Support Portal



Mar 1, 2012, 1:01 PM
46 Posts

iText PDF from Xpages

  • Category: Other
  • Platform: Windows
  • Release: 8.5.2
  • Role:
  • Tags: pdf,iText
  • Replies: 4
I create PDF documents as shown in this tutorial, and Hello World works.
But how to generate a PDF from the XPages called test1.xps? (in test1.xps ist table view)
 
http://notesin9.com/index.php/2011/10/23/notesin9-ee-012-creating-pdfs-from-xpages/?utm_source=feedburner&utm_medium=feed&utm_campaign=Feed%3A+NotesIn9+%28Notes+In+9+-+Wordpress%29
Mar 1, 2012, 1:49 PM
586 Posts
Re: iText PDF from Xpages
Thanks for watching that video.  Did you see that Brian did a second video on PDF creation?  While I don't think he did a full table example he did get fancier.
 
http://notesin9.com/index.php/2012/01/10/notesin9-039-creating-pdfs-with-xpages-part-2/ 
 
 
 
Mar 2, 2012, 9:36 AM
46 Posts
Re: iText PDF from Xpages
Hi David, I saw the second part of the tutorial but I still do not know how to generate a pdf  from the XPages called test1.xps
In test1.xps i have created view and a table of result.
Mar 3, 2012, 2:47 AM
14 Posts
Re: iText PDF from Xpages
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();
}
 
Mar 3, 2012, 2:48 AM
14 Posts
Re: iText PDF from Xpages
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();
}
 

This forum is closed to new posts and responses. Individual names altered for privacy purposes. The information contained in this website is provided for informational purposes only and should not be construed as a forum for customer support requests. Any customer support requests should be directed to the official HCL customer support channels below:

HCL Software Customer Support Portal for U.S. Federal Government clients
HCL Software Customer Support Portal