DOMPDF不';无法使用外部css文件

DOMPDF不';无法使用外部css文件,css,zend-framework,dompdf,Css,Zend Framework,Dompdf,我正在使用Zend框架和DOMPDF库。当我用内联css测试它时,一切都很完美。但是当我尝试将css代码移动到外部文件时,规则不会应用到html页面 这是我的密码 控制器动作代码,生成pdf 需要一次(“DomPdf/DomPdf_config.inc.php”) 2.对应视图的代码(index/dom.phtml) 如何让它工作 更新: 为了让它发挥作用,我改变了以下几点: 1.在控制器的操作中,为外部文件添加基本路径 $dompdf->set_base_path(APPLICATION

我正在使用Zend框架和DOMPDF库。当我用内联css测试它时,一切都很完美。但是当我尝试将css代码移动到外部文件时,规则不会应用到html页面

这是我的密码

  • 控制器动作代码,生成pdf
  • 需要一次(“DomPdf/DomPdf_config.inc.php”)

    2.对应视图的代码(index/dom.phtml)

    如何让它工作

    更新:

    为了让它发挥作用,我改变了以下几点:

    1.在控制器的操作中,为外部文件添加基本路径

    $dompdf->set_base_path(APPLICATION_PATH."/../public/themes/css/");
    
    2.在视图中更改链接标签的href属性。使其相对于步骤1中设置的基本路径

    <link type="text/css" href="pdf.css" rel="stylesheet" />
    

    这实际上与Zend Framework无关,但您需要提供正确的路径来加载“外部”文件

    $dompdf = new DOMPDF();
    $dompdf->setBasePath(realpath(APPLICATION_PATH . '/path/to/css/'));
    $dompdf->loadHtml($html);
    $dompdf->render();
    

    有关此功能,请参见DomPDF的说明。

    @Jurian Sluiman的回答是正确的,但不幸的是,他的回答对我没有帮助

    为了找到适合我的解决方案,我花了一些时间,使用了
    DOMPDF::set_protocol()

    WWW_ROOT
    这里有一个指向我的应用程序的webroot文件夹的链接。请注意,它有一个尾部斜杠

    最好的一点是,这似乎是对
    set\u protocol()
    的不当使用。但我同意,只要它能让CSS工作


    希望这能为其他人节省几个小时的时间。

    如果有人在搜索引擎上找到这一点(就像我一样),请注意还有另一个选项名为
    dompd::set_protocol()
    ,请参阅下面的我的答案以了解更多信息。谢谢@aexl,这为我节省了很多时间谢谢,但对我有效的是
    $options->setisremotenabled(true);  $options->setChroot(array\u merge($options->getChroot(),[WWW\u ROOT])。实际上,在设置了
    Chroot
    之后,我甚至不需要
    $dompd->setBasePath(WWW\u ROOT)阅读文档后,这与预期一致。我想没有CHROOT的安全保护是不行的。检查一下。
    
    $dompdf->set_base_path(APPLICATION_PATH."/../public/themes/css/");
    
    <link type="text/css" href="pdf.css" rel="stylesheet" />
    
    $dompdf = new DOMPDF();
    $dompdf->setBasePath(realpath(APPLICATION_PATH . '/path/to/css/'));
    $dompdf->loadHtml($html);
    $dompdf->render();
    
    $dompdf->set_protocol(WWW_ROOT);
    $dompdf->set_base_path('/');