2012-06-20 69 views
12

Im tratando de generar pdf usando dompdf, ¿cómo puedo abrir el pdf en una nueva pestaña en un navegador? Me gusta, I Haga clic en Un enlace para el PDF y debería abrirse en una nueva pestaña, no guardarlo automáticamente. Quiero darle al usuario la opción de guardar el archivo después de verlo primero. ¿Cómo puedo hacer eso?Abrir PDF en una nueva pestaña usando dompdf

siempre que utilizo $ pdf-> salida al final del archivo, no cambia nada, el archivo aún se descarga automáticamente. por favor ayuda. Gracias.

Respuesta

38

Si un PDF se descarga o se ve en el navegador depende de un par de factores. Una es la configuración de su navegador, pero no tenemos control allí. El segundo es cómo dompdf presenta el PDF al navegador. Puede decirle a dompdf que ofrezca el PDF para su visualización directa usando $dompdf->stream('my.pdf',array('Attachment'=>0));.

En cuanto a abrir en una nueva pestaña. Eso depende de cómo esté generando el PDF. Pero la forma más simple es proporcionar un enlace con un atributo objetivo.

+6

+1 for array ('Attachment' => 0) pensé que tendría que descargar este archivo pdf a mi computadora toda la vida –

+0

¿Alguien puede explicar lo que significa que "la forma más sencilla es proporcionar un enlace con un atributo de destino "? – renathy

+0

@renathy es esto en relación con su pregunta [aquí] (http://stackoverflow.com/q/17458553/264628)? En este caso, la respuesta supone que se accede al script de generación de PDF por enlace, no por formulario. Un atributo de destino en un elemento 'a' o' form' hará que el navegador abra el contenido en una nueva ventana/pestaña. p.ej. '' o '

'. – BrianS

2

que tienen un mismo problema en mi sitio (http://www.pdfwebcreator.com)

Mi solución es:

$myfile = fopen($strFileName, "r") or die("Unable to open file!"); 
    $fileSize = filesize($strFileName); 
    header("HTTP/1.1 200 OK"); 
    header("Pragma: public"); 
    header("Cache-Control: must-revalidate, post-check=0, pre-check=0"); 

    header("Cache-Control: private", false); 

    header("Content-type: application/pdf"); 
    header("Content-Disposition: attachment; filename=\"temporaryPdf.pdf\""); 

    header("Content-Transfer-Encoding: binary"); 
    header("Content-Length: " . $fileSize); 

    echo fread($myfile, $fileSize); 
} 
+1

'Content-Transfer-Encoding: binary' es la clave – Rodrigo

1

Am sigue experimentando, pero algo como esto funciona bien, así

$pdf->loadView('file/path', compact('values')); 
return $pdf->stream(); 

Con esto puede agregar valores dinámicos a su página de archivo PDF dentro del navegador.

0

No sé si lo que tienes, pero si se utiliza falsa en esta línea:

$dompdf-> stream("pasta/doc/relatorio.pdf", array("Attachment" => false)); 

se puede ver el PDF en el navegador.

Cuestiones relacionadas