AntecedentesEscribir secuencia binaria de navegador usando PHP
Tratando de transmitir un informe PDF escrito usando iReport través de PHP para el navegador. El problema general es: ¿cómo se escriben datos binarios en el navegador usando PHP?
Código de Trabajo
header('Cache-Control: no-cache private');
header('Content-Description: File Transfer');
header('Content-Disposition: attachment, filename=climate-report.pdf');
header('Content-Type: application/pdf');
header('Content-Transfer-Encoding: binary');
$path = realpath(".") . "/output.pdf";
$em = java('net.sf.jasperreports.engine.JasperExportManager');
$result = $em->exportReportToPdf($pm);
header('Content-Length: ' . strlen($result));
$fh = fopen($path, 'w');
fwrite($fh, $result);
fclose($fh);
readfile($path);
inhábiles Código
header('Cache-Control: no-cache private');
header('Content-Description: File Transfer');
header('Content-Disposition: attachment, filename=climate-report.pdf');
header('Content-Type: application/pdf');
header('Content-Transfer-Encoding: binary');
$path = realpath(".") . "/output.pdf";
$em = java('net.sf.jasperreports.engine.JasperExportManager');
$result = $em->exportReportToPdf($pm);
header('Content-Length: ' . strlen($result));
echo $result;
Pregunta
¿Cómo puedo sacar el paso intermedio de escritura en el archivo y escribir directamente al navegador para que el PDF sea no está dañado?
actualización
tamaño de los archivos PDF:
- de trabajo: 594778 bytes
- no de trabajo: 1.059.365 bytes
Gracias!
¿Agregar todos los encabezados que cortó desde el primer trabajo? –
@Casey: los encabezados siempre han sido los mismos en ambos casos. Ver el problema revisado. –
¡Ahh, ese es el informe climático! No te preocupes, eso es normal. Siempre están * con errores *;) –