2012-06-20 6 views
12

Im пытается сгенерировать pdf с помощью dompdf, как я могу открыть PDF на новой вкладке в браузере? Например, я нажимаю ссылку для PDF, и она должна открываться на новой вкладке, а не сохранять ее автоматически. Я хочу дать пользователю возможность сохранить файл, увидев его первым. Как мне это сделать?Открыть PDF в новой вкладке, используя dompdf

всякий раз, когда я использую $ pdf-> вывод в конце файла, он ничего не меняет, файл по-прежнему загружается автоматически. прошу помочь. Благодарю.

ответ

38

Независимо от того, загружен или просматривается PDF в браузере, зависит от нескольких факторов. Один из них - настройки вашего браузера, но мы не контролируем его. Во-вторых, как dompdf представляет PDF в браузер. Вы можете сказать, что dompdf предлагает PDF для прямого просмотра с использованием $dompdf->stream('my.pdf',array('Attachment'=>0));.

Что касается открытия на новой вкладке. Это зависит от того, как вы создаете PDF. Но самый простой способ предоставить ссылку с целевым атрибутом.

+6

+1 для массива ('Attachment' => 0) подумал, что мне придется загрузить этот pdf-файл на компьютер всю свою жизнь –

+0

Может кто-нибудь объяснить, что означает «самый простой способ обеспечить связь с целевой атрибут "? – renathy

+0

@renathy это по отношению к вашему вопросу [здесь] (http://stackoverflow.com/q/17458553/264628)? В этом случае ответ предполагает, что сценарий генерации PDF-файла доступен по ссылке, а не по форме. Атрибут target в элементе 'a' или' form' приведет к тому, что браузер откроет содержимое в новом окне/вкладке. например '' или '

'. – BrianS

2

У меня такая же проблема в моем сайте (http://www.pdfwebcreator.com)

Мое решение:

$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» - это ключ – Rodrigo

1

Am еще экспериментировать, но что-то как это работает отлично, а

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

С это можно добавить динамические значения на страницу PDF-файла в браузере.

0

Я не знаю, если у вас есть, но если вы используете ложь в этой строке:

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

Вы можете увидеть PDF в браузере.

Смежные вопросы