无法读取通过 chrome 中的 dompdf 生成的 pdf


Cannot read pdf generated through dompdf in chrome

我只是在测试dompdf。并发现我生成的东西不能被铬染成红色。试图用苏门答腊pdf阅读器打开它,它打开了。尝试在chrome中打开我的电子书中的一些随机pdf文件,它变成了红色。我的代码有问题,chrome无法读取它:

<?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");
}
?>

问题可能在于默认情况下dompdf将内容作为附件转储,强制下载。为了允许浏览器以内联方式查看它,必须通过为流方法设置附加参数来告诉它不要这样做。

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

如果这没有意义,请尝试在生成(并在磁盘上写入)所需的 html 输出后清理输出缓冲区,而不将其放在屏幕上。对请求/响应进行标头调试,并查看其中是否有任何空格或空格。如果这样做,客户端将无法读取标头,并且您可能无法看到生成的 PDF。

PDF

可能已正确呈现,但根据您的服务器配置,PDF 源中可能包含某些非 PDF 内容。一些PDF阅读器比其他PDF阅读器更宽松,并且会丢弃非PDF内容。检查这一点的最简单方法是在文本编辑器中打开您的 PDF 并查找 HTML 文本字符串等内容。

如果这不是问题,那么查看PDF本身会有所帮助。

Chrome pdf查看器很糟糕,把它留给专家。如果您没有 Acrobat Reader,请安装它。在Chrome地址栏中键入about:plugins,然后单击以禁用Chrome pdf查看器。然后单击以启用 Acrobat Reader---pdf 在 Chrome 中查看将起作用!