Не удается прочитать pdf, сгенерированный через dompdf в chrome

Я просто тестирую dompdf. И обнаружил, что то, что я генерирую, не может быть красным от хрома. Попытался открыть его программой Sumatra PDF Reader, и он открылся. Попытался открыть какой-то случайный pdf-файл из моих электронных книг в хроме, и он стал красным. Что-то не так с моим кодом, который хром не смог прочитать:

<?php
require_once("dompdf/dompdf_config.inc.php");

$dompdf = new DOMPDF();

$d_r = array(array('name'=>'ab', 'course'=>'bsit'), array('name'=>'yoh', 'course'=>'bscs'));

ob_start();
put_table($d_r);
file_put_contents('sample.html', ob_get_contents());
generate_pdf('sample.html');

function put_table($raw_data){
?>
<table border="1">
    <tr>
    <th>Name</th>
    <th>Course</th>
    </tr>

<?php foreach($raw_data as $data){ ?>   
    <tr>
    <td><?php echo $data['name']; ?></td>
    <td><?php echo $data['course']; ?></td>
    </tr>
<?php } ?>
</table>


    <?php
}


function generate_pdf($filename){
    global $dompdf;

    $dompdf->load_html(file_get_contents($filename));
    $dompdf->render();
    $dompdf->stream($filename. ".pdf");

}
?>

person Wern Ancheta    schedule 11.05.2011    source источник


Ответы (3)


PDF-файл может быть отрендерен правильно, но в зависимости от конфигурации вашего сервера в исходный PDF-файл может быть включено некое содержимое, отличное от PDF. Некоторые читатели PDF более снисходительны, чем другие, и отбрасывают содержимое, отличное от PDF. Самый простой способ проверить это — открыть PDF-файл в текстовом редакторе и найти такие вещи, как строки текста HTML.

Если это не проблема, было бы полезно увидеть сам PDF.

person BrianS    schedule 12.05.2011

Проблема может заключаться в том, что по умолчанию dompdf выгружает содержимое в виде вложения, что приводит к принудительной загрузке. Чтобы позволить браузеру просматривать его в режиме реального времени, ему нужно запретить это, установив дополнительный параметр для метода потока.

$dompdf->stream("my_pdf.pdf", array("Attachment" => 0));

Если это не имеет смысла, попробуйте очистить выходной буфер после создания (и записи на диск) желаемого HTML-вывода, не выводя его на экран. Выполните отладку заголовка в запросе/ответе и посмотрите, есть ли в нем пробелы или пробелы. Если вы это сделаете, заголовки не будут прочитаны клиентом, и вы не сможете увидеть полученный PDF-файл.

person Elis    schedule 11.05.2011

Просмотрщик PDF в Chrome ужасен, оставьте его экспертам. Установите Acrobat Reader, если у вас его нет. В адресной строке Chrome введите about:plugins и нажмите, чтобы отключить просмотрщик PDF в Chrome. Затем нажмите, чтобы включить Acrobat Reader --- просмотр PDF в Chrome будет работать!

person TopgunB    schedule 10.10.2011
comment
На сегодняшний день. Средство просмотра PDF в Chrome лучше, чем Adobe ... Здесь я могу просматривать PDF-файл, сгенерированный dompdf, но с Adobe я получаю сообщение об ошибке 135 ... - person MarcoS; 24.01.2014