Dompdf流只是下载没有对话框提示

时间:2018-02-22 09:33:13

标签: symfony dompdf

我在Symfony 3项目中使用Dompdf并且它一直工作正常,直到我试图下载它。目前,它只是下载没有对话框提示,这是我想要的,根据文档,将值1传递给Attachment选项应该这样做。

这是我的代码:

$html = $this->renderView('pages/invoice_print.html.twig', array(
            'invoice' => $invoice_array
        ));

$dompdf = new Dompdf();
$dompdf->set_option('isHtml5ParserEnabled', true);
$dompdf->loadHtml($html);

$dompdf->setPaper('A4', 'portrait');

$dompdf->render();

$output = $dompdf->output();

$dompdf->stream("invoice_" . $invoice->getId(), array('Attachment' => 1));

说实话,我的印象是Attachment默认设置为1 - 所以我不确定是怎么回事。我使用的是Firefox Quantum。

编辑:

现在附上了PDF将如何在浏览器中呈现的屏幕截图:

enter image description here

1 个答案:

答案 0 :(得分:0)

我过去没有和dompdf合作过,但是,只要看一下Github上的代码,我相信我会看到你需要的东西。

当你调用stream()时,你有:

if (!isset($options["compress"])) $options["compress"] = true;
if (!isset($options["Attachment"])) $options["Attachment"] = true;

因此,如果没有Attachment选项,则该选项将设置为true

接下来,在第1311行,你有:

$attachment = $options["Attachment"] ? "attachment" : "inline";
header(Helpers::buildContentDispositionHeader($attachment, $filename));

基本上归结为Content-Disposition标题:

$contentDisposition = "Content-Disposition: $dispositionType; filename=\"$fallbackfilename\"";

最后,根据标准,如果您要在网页内提供文件(例如没有提示对话框),则需要将处置设置为inline

总而言之,您是否尝试过将Attachment设为false

$dompdf->stream("invoice_" . $invoice->getId(), array('Attachment' => false));

希望这会有所帮助......