prestashop显示附件内联

时间:2016-07-12 14:24:58

标签: php prestashop tcpdf

我正在创建包含一些产品详细信息的自定义PDF文件。我想显示图像的产品附件。我已将附件控制器更改为

header('Content-Disposition: inline; filename="'.utf8_decode($a->file_name).'"');

当我通过浏览器访问网址时,显示效果很好:

http://domain.nl/nl/index.php?controller=attachment&id_attachment=483

但是在我的PDF模板中的img标签内使用此url会给出:

TCPDF ERROR: [Image] Unable to get image: http://domain.nl/nl/index.php?controller=attachment&id_attachment=483

有没有人知道如何使这项工作?

1 个答案:

答案 0 :(得分:1)

我在AttachmentController.php旁边创建了一个名为AttachmentInlineController.php的新文件。内容略有不同:

<?php
class AttachmentInlineControllerCore extends FrontController
{
    public function __construct()
    {
        $a = new Attachment(Tools::getValue('id_attachment'), $this->context->language->id);
        if (!$a->id) {
            Tools::redirect('index.php');
        }


        if (ob_get_level() && ob_get_length() > 0) {
            ob_end_clean();
        }

        header('Content-Transfer-Encoding: binary');
        header('Content-Type: '.$a->mime);
        header('Content-Length: '.filesize(_PS_DOWNLOAD_DIR_.$a->file));
        header('Content-Disposition: inline; filename="'.utf8_decode($a->file_name).'"');
        @set_time_limit(0);
        readfile(_PS_DOWNLOAD_DIR_.$a->file);
        exit;

    }
}?>

我删除了挂钩,更改了内容 - 处置内联,并将功能从postProcess()更改为__construct。现在,如果您使用:

http://domain.nl/nl/index.php?controller=attachmentInline&id_attachment=483

它会以内联方式显示该附件,您可以在图片标签等中使用此网址。