You are viewing a plain text version of this content. The canonical link for it is here.
Posted to users@myfaces.apache.org by Joe ONeil <jo...@comcast.net> on 2007/08/08 20:38:16 UTC
JSF render BIRT open PDF file
I can create the pdf file and I can open the pdf file it but my browser
screen does not finish refreshing so end up with a white screen I create the
Birt engine in the application bean with has an application scope
I can create a HTML report and open it in a seperate browser window if I
have to but I would rather have a PDF This is the code I am using
****application bean****
try{
config = new EngineConfig();
config.setEngineHome(
"C:\\birtruntime\\birt-runtime-2_2_0\\ReportEngine" );
config.setLogConfig("c:/birt/logs", Level.FINE);
Platform.startup( config );
IReportEngineFactory factory = (IReportEngineFactory) Platform
.createFactoryObject(
IReportEngineFactory.EXTENSION_REPORT_ENGINE_FACTORY );
engine = factory.createReportEngine( config );
engine.changeLogLevel( Level.WARNING );
}catch( Exception ex){
ex.printStackTrace();
}
I then have a action that uses the engine
public String birtReport2(){
System.out.println("entering birtReport2");
HashMap<String, Integer> parameters = new HashMap<String, Integer>();
String name = "requestid";
Integer pvalue = new Integer(4);
parameters.put(name, 9667);
FacesContext faces = FacesContext.getCurrentInstance();
HttpServletResponse resp = (HttpServletResponse) faces.getExternalContext
().getResponse();
HttpServletRequest req=(HttpServletRequest)
faces.getExternalContext().getRequest();
resp.setContentType( "application/pdf" );
resp.setHeader ("Content-Disposition","attachment; filename=/output.pdf");
ServletContext sc = req.getSession().getServletContext();
PDFRenderContext renderContext = new PDFRenderContext();
HashMap<String, PDFRenderContext> contextMap = new HashMap<String,
PDFRenderContext>();
contextMap.put( EngineConstants.APPCONTEXT_PDF_RENDER_CONTEXT,
renderContext );
IReportRunnable design;
try
{
//Open report design
design =
FacesUtils.getApplicationBean().getEngine().openReportDesign(sc.getRealPath
("app/birt/compliancerecycle.rptdesign"));
//create task to run and render report
IRunAndRenderTask task = FacesUtils.getApplicationBean().getEngine()
.createRunAndRenderTask( design );
task.setAppContext( contextMap );
//set output options
PDFRenderOption options = new PDFRenderOption();
//options.setOutputFormat(HTMLRenderOption.OUTPUT_FORMAT_HTML);
options.setOutputFormat(PDFRenderOption.OUTPUT_FORMAT_PDF);
// options.setOutputFileName(filename);
//System.out.println("options.getOutputFileName()"+options.getOutputFileName());
options.setOutputFormat("pdf");
options.setOutputStream(resp.getOutputStream());
task.setRenderOption(options);
//run report
task.run();
task.close();
faces.responseComplete();
}catch (Exception e){
e.printStackTrace();
}
System.out.println("leaving birtReport2");
return "null";
}
I have also tried it with the HTMLRenderContext and HTMLRenderOption with
the same results
--
View this message in context: http://www.nabble.com/JSF-render-BIRT-open-PDF-file-tf4238279.html#a12059402
Sent from the MyFaces - Users mailing list archive at Nabble.com.
Re: JSF render BIRT open PDF file
Posted by Joe ONeil <jo...@comcast.net>.
I believe it is more a JSF problem because I can even save the pdf and open
the file outside the browser
I think it is more a JSF lifecycle problem the faces.responseComplete();
is what displays the pdf
Martin Ahrer wrote:
>
> Hi Joe, I'm using JSF+Birt myself in a project but I can't help in this
> special case but I suggest that you would rather get some quick response
> if you posted this to the birt newsgroup. I have experienced that they
> respond quite quickly!
>
>
>
> Joe ONeil wrote:
>>
>> I can create the pdf file and I can open the pdf file it but my browser
>> screen does not finish refreshing so end up with a white screen I create
>> the Birt engine in the application bean with has an application scope
>> I can create a HTML report and open it in a seperate browser window if I
>> have to but I would rather have a PDF This is the code I am using
>>
>> ****application bean****
>> try{
>> config = new EngineConfig();
>> config.setEngineHome(
>> "C:\\birtruntime\\birt-runtime-2_2_0\\ReportEngine" );
>> config.setLogConfig("c:/birt/logs", Level.FINE);
>> Platform.startup( config );
>> IReportEngineFactory factory = (IReportEngineFactory) Platform
>> .createFactoryObject(
>> IReportEngineFactory.EXTENSION_REPORT_ENGINE_FACTORY );
>> engine = factory.createReportEngine( config );
>> engine.changeLogLevel( Level.WARNING );
>> }catch( Exception ex){
>> ex.printStackTrace();
>> }
>> I then have a action that uses the engine
>> public String birtReport2(){
>> System.out.println("entering birtReport2");
>> HashMap<String, Integer> parameters = new HashMap<String, Integer>();
>> String name = "requestid";
>> Integer pvalue = new Integer(4);
>> parameters.put(name, 9667);
>> FacesContext faces = FacesContext.getCurrentInstance();
>> HttpServletResponse resp = (HttpServletResponse)
>> faces.getExternalContext
>>
>> ().getResponse();
>> HttpServletRequest req=(HttpServletRequest)
>> faces.getExternalContext().getRequest();
>> resp.setContentType( "application/pdf" );
>> resp.setHeader ("Content-Disposition","attachment;
>> filename=/output.pdf");
>> ServletContext sc = req.getSession().getServletContext();
>> PDFRenderContext renderContext = new PDFRenderContext();
>> HashMap<String, PDFRenderContext> contextMap = new HashMap<String,
>>
>> PDFRenderContext>();
>> contextMap.put( EngineConstants.APPCONTEXT_PDF_RENDER_CONTEXT,
>> renderContext );
>> IReportRunnable design;
>> try
>> {
>> //Open report design
>> design =
>> FacesUtils.getApplicationBean().getEngine().openReportDesign(sc.getRealPath
>>
>> ("app/birt/compliancerecycle.rptdesign"));
>> //create task to run and render report
>> IRunAndRenderTask task = FacesUtils.getApplicationBean().getEngine()
>>
>> .createRunAndRenderTask( design );
>> task.setAppContext( contextMap );
>> //set output options
>> PDFRenderOption options = new PDFRenderOption();
>> //options.setOutputFormat(HTMLRenderOption.OUTPUT_FORMAT_HTML);
>> options.setOutputFormat(PDFRenderOption.OUTPUT_FORMAT_PDF);
>> // options.setOutputFileName(filename);
>>
>> //System.out.println("options.getOutputFileName()"+options.getOutputFileName());
>> options.setOutputFormat("pdf");
>> options.setOutputStream(resp.getOutputStream());
>> task.setRenderOption(options);
>> //run report
>> task.run();
>> task.close();
>> faces.responseComplete();
>> }catch (Exception e){
>> e.printStackTrace();
>> }
>> System.out.println("leaving birtReport2");
>> return "null";
>> }
>> I have also tried it with the HTMLRenderContext and HTMLRenderOption
>> with the same results
>>
>>
>
>
--
View this message in context: http://www.nabble.com/JSF-render-BIRT-open-PDF-file-tf4238279.html#a12060728
Sent from the MyFaces - Users mailing list archive at Nabble.com.
Re: JSF render BIRT open PDF file
Posted by Martin Ahrer <ma...@gmx.at>.
Hi Joe, I'm using JSF+Birt myself in a project but I can't help in this
special case but I suggest that you would rather get some quick response if
you posted this to the birt newsgroup. I have experienced that they respond
quite quickly!
Joe ONeil wrote:
>
> I can create the pdf file and I can open the pdf file it but my browser
> screen does not finish refreshing so end up with a white screen I create
> the Birt engine in the application bean with has an application scope
> I can create a HTML report and open it in a seperate browser window if I
> have to but I would rather have a PDF This is the code I am using
>
> ****application bean****
> try{
> config = new EngineConfig();
> config.setEngineHome(
> "C:\\birtruntime\\birt-runtime-2_2_0\\ReportEngine" );
> config.setLogConfig("c:/birt/logs", Level.FINE);
> Platform.startup( config );
> IReportEngineFactory factory = (IReportEngineFactory) Platform
> .createFactoryObject(
> IReportEngineFactory.EXTENSION_REPORT_ENGINE_FACTORY );
> engine = factory.createReportEngine( config );
> engine.changeLogLevel( Level.WARNING );
> }catch( Exception ex){
> ex.printStackTrace();
> }
> I then have a action that uses the engine
> public String birtReport2(){
> System.out.println("entering birtReport2");
> HashMap<String, Integer> parameters = new HashMap<String, Integer>();
> String name = "requestid";
> Integer pvalue = new Integer(4);
> parameters.put(name, 9667);
> FacesContext faces = FacesContext.getCurrentInstance();
> HttpServletResponse resp = (HttpServletResponse)
> faces.getExternalContext
>
> ().getResponse();
> HttpServletRequest req=(HttpServletRequest)
> faces.getExternalContext().getRequest();
> resp.setContentType( "application/pdf" );
> resp.setHeader ("Content-Disposition","attachment;
> filename=/output.pdf");
> ServletContext sc = req.getSession().getServletContext();
> PDFRenderContext renderContext = new PDFRenderContext();
> HashMap<String, PDFRenderContext> contextMap = new HashMap<String,
>
> PDFRenderContext>();
> contextMap.put( EngineConstants.APPCONTEXT_PDF_RENDER_CONTEXT,
> renderContext );
> IReportRunnable design;
> try
> {
> //Open report design
> design =
> FacesUtils.getApplicationBean().getEngine().openReportDesign(sc.getRealPath
>
> ("app/birt/compliancerecycle.rptdesign"));
> //create task to run and render report
> IRunAndRenderTask task = FacesUtils.getApplicationBean().getEngine()
>
> .createRunAndRenderTask( design );
> task.setAppContext( contextMap );
> //set output options
> PDFRenderOption options = new PDFRenderOption();
> //options.setOutputFormat(HTMLRenderOption.OUTPUT_FORMAT_HTML);
> options.setOutputFormat(PDFRenderOption.OUTPUT_FORMAT_PDF);
> // options.setOutputFileName(filename);
>
> //System.out.println("options.getOutputFileName()"+options.getOutputFileName());
> options.setOutputFormat("pdf");
> options.setOutputStream(resp.getOutputStream());
> task.setRenderOption(options);
> //run report
> task.run();
> task.close();
> faces.responseComplete();
> }catch (Exception e){
> e.printStackTrace();
> }
> System.out.println("leaving birtReport2");
> return "null";
> }
> I have also tried it with the HTMLRenderContext and HTMLRenderOption with
> the same results
>
>
--
View this message in context: http://www.nabble.com/JSF-render-BIRT-open-PDF-file-tf4238279.html#a12060508
Sent from the MyFaces - Users mailing list archive at Nabble.com.