开发者

pdf report view inside browser

开发者 https://www.devze.com 2022-12-10 05:15 出处:网络
I have created this report using BIRT and phpjavabridge <?php header(\"Content-type: application/pdf\");

I have created this report using BIRT and phpjavabridge

<?php

header("Content-type: application/pdf");
header("Content-Disposition: inline; filename=downloaded.pdf");

require_once("http://127.0.0.1:8080/JavaBridge/java/Java.inc");
header("Content-type: text/html");



// the report file to render
$myReport = "test.rptdesign";

// load resources, .rpt files and images from the current working dir
$here = getcwd();

$ctx = java_context()->getServletContext();
$birtReportEngine =        java("org.eclipse.birt.php.birtengine.BirtEngine")->getBirtEngine($ctx);
java_context()->onShutdown(java("org.eclipse.birt.php.birtengi开发者_如何学Gone.BirtEngine")->getShutdownHook());


// Create a HTML render context

try{

// Load the report design
$design = $birtReportEngine->openReportDesign("${here}/${myReport}");
$task = $birtReportEngine->createRunAndRenderTask( $design );
$task->setParameterValue("sample", new java("java.lang.String", "Hello world!"));

// Add HTML render options
$options = new java("org.eclipse.birt.report.engine.api.PDFRenderOption");
$options->setOutputFormat($options->OUTPUT_FORMAT_PDF);

// Create the output
$out = new java("java.io.ByteArrayOutputStream");
$options->setOutputStream($out);
$task->setRenderOption($options);
$task->run ();
$task->close();

} catch (JavaException $e) {
    echo $e; //"Error Calling BIRT";

}


// Return the generated output to the client
echo java_values($out->toByteArray());


?>

The report viewed perfectly inside Internet Explorer 8.0 as it triggered the Adobe Acrobat plugin. The problem is when I opened the report inside Mozilla Firefox 3.5.4 and Google Chrome 4.0.233 it showed me the binary string content of the pdf file, instead of triggering the Adobe Acrobat plugin.

I have checked this by putting a pdf file in the htdoc folder and call it from Firefox and Chrome, it worked just fine. But why the header wont work for the report?

*Also why the header only work for IE 8.0? I need the report to be viewed in all major browser


Content-type should be "application/pdf"

(or "application/x-pdf", for more recent pdf formats)

I think that if you change

header("Content-type: text/html");
to
header("Content-type: application/pdf");

in the code above, the browsers mentioned should start rendering the pdf documents properly (provided they are so configured), and IE will continue working ok (IE has some Automatic MIME Type Detection (based on the first few hundred bytes of content), which is a mixed blessing...)

0

精彩评论

暂无评论...
验证码 换一张
取 消

关注公众号