Change filename of generated PDF

kszyhooo
edited February 11, 2022 in Analytics #1
<p><span style="font-size:12px;">Hello,</span></p>
<p> </p>
<p><span style="font-size:12px;">It is possible to change filename of generated PDF?</span></p>
<p> </p>
<p><span style="font-size:12px;">For example i have report which show 'product_line' from 'classic models db' filtered by input parameter and i want to get PDF with filename 'Motorcycles.PDF'.</span></p>
<p> </p>
<div><span style="font-size:12px;">Right now i'm generating PDF by adding '&__format=pdf' to URL via javascript. </span></div>
<div> </div>
<div> </div>
<div><span style="font-size:12px;">P.S. </span></div>
<div><span style="font-size:12px;">I don't want to change anything in BIRT itself, because this must be enviroment independent.</span></div>

Comments

  • <p>No replies? Anyone?</p>
    <p> </p>
    <p> </p>
    <div>I searched again forum and found some example report, but i got error.</div>
    <div> </div>
    <div>There are two script:</div>
    <div> </div>
    <div>-beforeFactory:</div>
    <div> </div>
    <div><em>mmap = reportContext.getHttpServletRequest().getAttribute("attributeBean").getModuleOptions();</em></div>
    <div> </div>
    <div> </div>
    <div> </div>
    <div>-beforeRender:</div>
    <div> </div>
    <div><em>mmap = reportContext.getHttpServletRequest().getAttribute("attributeBean").getModuleOptions();</em></div>
    <div><em>rptdoc = reportContext.getHttpServletRequest().getAttribute("attributeBean").getReportDocumentName();</em></div>
    <div> </div>
    <div><em>importPackage(Packages.org.eclipse.birt.report.engine.api);</em></div>
    <div><em>importPackage(Packages.java.io)</em></div>
    <div><em>var re = reportContext.getReportRunnable().getReportEngine();</em></div>
    <div><em>var mdocument = re.openReportDocument(null,rptdoc, mmap); </em></div>
    <div><em>var options = new PDFRenderOption();</em></div>
    <div><em>baos = new ByteArrayOutputStream();<span> </span></em></div>
    <div><em>options.setOutputFormat("pdf");</em></div>
    <div><em>options.setOutputStream(baos);</em></div>
    <div> </div>
    <div><em>var ntask = re.createRenderTask(mdocument); <span> </span></em></div>
    <div><em>ntask.setRenderOption(options);</em></div>
    <div><em>ntask.render();</em></div>
    <div><em>ntask.close();</em></div>
    <div><em>mdocument.close();</em></div>
    <div> </div>
    <div><em>fout = new FileOutputStream("c:/test/myreport.pdf");   </em></div>
    <div><em>fout.write(baos.toByteArray());</em></div>
    <div><em>fout.flush()</em></div>
    <div><em>fout.close();   </em></div>
    <div> </div>
    <div> </div>
    <div>I'm getting error:</div>
    <div> </div>
    <div><em>There are errors evaluating script "mmap = reportContext.getHttpServletRequest().getAttribute("attributeBean").getModuleOptions()":</em></div>
    <div><em>TypeError: Cannot call method "getModuleOptions" of null (/report/method[@name=&quot;beforeFactory"]#1)</em></div>
    <div> </div>
    <div> </div>
    <div>This example report worked on BIRT2.3.2. Something changed in 4.4.0?</div>
    <div> </div>
    <div> </div>
    <div>Could anyone help me with this topic?</div>
  • I would recommend to check zetpdf.com/
    library