【问题标题】:How to use Output('filename.pdf', \Mpdf\Output\Destination::INLINE); in mPDF v.6.1.4?如何使用 Output('filename.pdf', \Mpdf\Output\Destination::INLINE);在 mPDF v.6.1.4 中?
【发布时间】:2020-03-19 05:42:08
【问题描述】:

我在使用 v.6.1.4 调用输出函数时遇到问题。 因为我曾经尝试在 mPDF v.7.x 中使用 Output('filename.pdf', \Mpdf\Output\Destination::INLINE); 函数,所以我在 mPDF v.6.1.4 中尝试了这个格式函数(只是将“\Mpdf..”更改为“\mPDF..”),因为我正在与使用 php 5 甚至更早的公司合作,然后我收到此错误:

致命错误:找不到类“mPDF\Output\Destination”。

如何执行 mPDF 输出功能以在 mPDF v.6.1.4 中显示 pdf 内联浏览器?

在此先感谢兄弟/姐妹们。

【问题讨论】:

    标签: php pdf mpdf php-5.6 php4


    【解决方案1】:

    使用字符串I 作为第二个参数,表示“内联”。

    $mpdf->Output('filename.pdf', 'I');
    

    查看 mPDF 7 中引入的输出常量的实际字符串值:https://github.com/mpdf/mpdf/blob/development/src/Output/Destination.php

    Mpdf::Output documentation page 现在还显示帮助器 Mpdf\Output\Destination 类常量的实际值。

    【讨论】:

    • 问题是关于Mpdf v6.1.4中如何使用Output('filename.pdf', \Mpdf\Output\Destination::INLINE);
    • 不,问题是“我如何执行 mPDF 输出功能以在 mPDF v.6.1.4 中显示 pdf 内联浏览器?”,我回答了。当然,我本可以更冗长,我用代码示例编辑了答案。
    • 我已经运行了这个代码兄弟,但仍然下载了 pdf 而不是显示 pdf 内联浏览器。
    • 你的浏览器是什么?您可以显示其他来源的 PDF 吗?您是否在代码的其他地方设置了 HTTP 标头?
    • 我正在使用 Chrome x78 和 Firefo x68。顺便说一句,每当我想显示 PDF 内联浏览器时。它将被下载而不是在浏览器中显示。我还在我的代码之上设置了 HTTP 标头。我如何显示浏览器的 PDF 内联嗯。以便用户在下载 PDF 文件之前可以看到它的内容。
    【解决方案2】:

    您不能在 mPDF v.6.1.4 中使用 \Mpdf\Output\Destination::INLINE,因为 \Mpdf\Output\Destination 类未在 mPDF v.6.1.4 中定义。但是您可以使用I 代替\Mpdf\Output\Destination::INLINE

    Class 'mPDF\Output\Destination 定义自 mPdf v7.0.


    为了更清楚,相关的源代码。 这里是源代码,这个版本没有/Output/Destination.phphttps://raw.githubusercontent.com/mpdf/mpdf/v6.1.4/mpdf.php

    function Output($name = '', $dest = '')
    {
    
        ...
        if (is_bool($dest))
            $dest = $dest ? 'D' : 'F';
        $dest = strtoupper($dest);
        if ($dest == '') {
            if ($name == '') {
                $name = 'mpdf.pdf';
                $dest = 'I';
            } else {
                $dest = 'F';
            }
        }
        ...
    }
    

    这里是v7.0.0的源码,加上Output/Destination.phphttps://raw.githubusercontent.com/mpdf/mpdf/v7.0.0/src/Mpdf.php

    function Output($name = '', $dest = '')
    {
    
        ...
        if (is_bool($dest)) {
            $dest = $dest ? Destination::DOWNLOAD : Destination::FILE;
        }
    
        $dest = strtoupper($dest);
        if (empty($dest)) {
            if (empty($name)) {
                $name = 'mpdf.pdf';
                $dest = Destination::INLINE;
            } else {
                $dest = Destination::FILE;
            }
        }
        ...
    }
    

    https://github.com/mpdf/mpdf/blob/v7.0.0/src/Output/Destination.php

    <?php
    namespace Mpdf\Output;
    class Destination
    {
        const FILE = 'F';
        const DOWNLOAD = 'D';
        const STRING_RETURN = 'S';
        const INLINE = 'I';
    }
    

    【讨论】:

    • 你给了好相关的源码哥,可惜pdf还是下载文件而不是显示inline browser哥。
    • 如果要查看,需要在header中添加Content-Type: application/pdf
    • 我在include "config.php"; 之后添加了header("Content-Type: application/pdf");,但仍然下载文件。兄弟有什么解决办法吗?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-11-22
    • 1970-01-01
    • 2023-03-31
    • 1970-01-01
    • 2018-02-04
    相关资源
    最近更新 更多