我需要知道为什么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