dompdf在浏览器中使用localhost流式传输pdf,但不在网络ip中


dompdf stream pdf in browser using localhost, but not in network ip

我需要知道为什么dompdf在像192.168.1.77这样的网络ip上下载之前没有在浏览器中流式传输pdf,但它在localhost上工作。

当使用网络ip时,它只是立即下载文件,不会在浏览器中显示pdf预览

我使用的是dompdf版本0.6.2这是我的代码

$dompdf = new DOMPDF();
    ob_start();
    $this->load->view('report_me',array_merge($this->sesi,$this->session->userdata('printdata')));
    // header('Pragma','public');
    $html = ob_get_contents();
    ob_end_clean();
    // $this->session->unset_userdata('printdata');
// $dompdf->set_option('setIsHtml5ParserEnabled', true);

    $dompdf->load_html($html);
// (Optional) Setup the paper size and orientation
// $dompdf->setPaper('A4', 'potrait');
// Render the HTML as PDF
    $dompdf->render();
    $canvas = $dompdf->get_canvas();
    $font = Font_Metrics::get_font("helvetica", "bold");
    $canvas->page_text(44, 760, "Page {PAGE_NUM} of {PAGE_COUNT}", $font, 8, array(0,0,0));
//ERASE SESSION
// Output the generated PDF to Browser
    $dts = date('Y-m-d');
    // $dompdf->output();
    // $dompdf->stream();
    $dompdf->stream('inv_'.$this->Master_model->getInvoiceNumber().'_'.$dts.'.pdf',array('Attachment'=>0));

我启用了

启用远程

至真实

似乎只有我一个人面对这个问题,希望有人能帮助我度过难关。。

在Laravel上遇到了类似的问题,并尝试添加标头。不起作用。

我在stream()之后添加了exit;,它开始显示。我猜测框架可能在stream()之后做了一些事情,导致标头恢复到text/html

您需要在顶部设置标题:

header("Content-type: application/pdf");

这应该会在浏览器中显示它。

如果你想下载,设置标题如下:

header('Content-disposition: attachment; filename='path/to/file/name.pdf');
  • 这可以在您创建pdf并将其保存到某个位置后进行设置
  • 注意:path/to/file/name.pdf在服务器上,而不是在您的本地机器上

尝试删除html head body开始和结束标记之间的一些空格或换行符。像这个<html><head> </head><body> </body><html>

还要从html中删除thead tbody tfoot标记(有时这不是必要的,但在我的情况下,我需要删除)。

如果您多次调用DOM类。更改分配的变量(不要让它们是同一个变量,在我的情况下是$pdf = new DOMPDF。在第二个类调用中,我使用了相同的变量。我将其更改为$pdf2

它已经从这里起飞了;https://github.com/dompdf/dompdf/issues/902#issuecomment-197655763