Php Symfony2 Knp snappy生成PDF文件';不导入CSS

Php Symfony2 Knp snappy生成PDF文件';不导入CSS,php,css,twitter-bootstrap,symfony,pdf,Php,Css,Twitter Bootstrap,Symfony,Pdf,我想从html.twig模板生成pdf,但出现问题 事实上,PDF已经创建好的内容,但没有布局。看起来CSS文件没有导入 我使用twitter的Bootstrap来管理布局 这是我控制器的一部分 $filename = "CI-TRI-".$Chrono->getChrono(); $this->get('knp_snappy.pdf')->generateFromHtml(

我想从html.twig模板生成pdf,但出现问题

事实上,PDF已经创建好的内容,但没有布局。看起来CSS文件没有导入

我使用twitter的Bootstrap来管理布局

这是我控制器的一部分

 $filename = "CI-TRI-".$Chrono->getChrono();
            $this->get('knp_snappy.pdf')->generateFromHtml(
                                                            $this->renderView('WebStoreMainBundle:Admin:customInvoiceTemplate.html.twig', array('User'=>$User,'Parts'=>$parts, 'device'=>$device, 'rate'=>$rate)),
                                                            __DIR__.'/../../../../web/download/'.$filename.'.pdf'
                                                            );
这里是我的布局:

<html>
<head>
     {% block stylesheets %}
        <link rel="stylesheet" type="text/css" href="{{ asset('bootstrap/css/bootstrap.css') }}">
        <link rel="stylesheet" type="text/css" href="{{ asset('bootstrap/css/customInvoice.css') }}">
        <base href="http://{{app.request.host}}">
        <meta charset="UTF-8" >
    {% endblock %}
</head>
<body>
    {% block header %}
        <div class="span2">
            <img src="{{ asset('bootstrap/img/GTO_logo.png') }}">
        </div>
    {% endblock %}

    {% block content %}

    {% endblock %}

</body>

{%块样式表%}
{%endblock%}
{%块头%}
{%endblock%}
{%block content%}
{%endblock%}

希望有人能帮助我


PS:很抱歉输入错误,英语不是我的母语。

必须使用绝对路径链接资产。因此,不是:

<link rel="stylesheet" type="text/css" href="{{ asset('bootstrap/css/bootstrap.css') }}">

应该是:

<link rel="stylesheet" type="text/css" href="http://yourdomain.com/bootstrap/css/bootstrap.css">


我自己也有这个问题,这帮我解决了。

提供这样的绝对参数会更容易:

<link rel="stylesheet" type="text/css" href="{{ asset('bootstrap/css/bootstrap.css', absolute=true) }}">

资产看涨期权中的绝对期权:

<img src="{{ asset('/assets/img/AVNZ-Logo-H-SMALL.jpg', absolute=true) }}">

与官方捆绑回购相关:
@user1805558的回答对我很有用。我也使用了较少的,并且使用了这个,一些人可能会发现这很有帮助:

{% block stylesheets %}
    {% stylesheets filter='lessphp' combine=true output='css/pdf.css.twig'
        '../app/Resources/assets/css/pdf.less'
    %}
        <link rel="stylesheet" type="text/css" href="{{ asset(asset_url, absolute=true) }}"/>
    {% endstylesheets %}
{% endblock %}
{%block stylesheets%}
{%stylesheets-filter='lesshp'combine=true-output='css/pdf.css.twig'
“../app/Resources/assets/css/pdf.less”
%}
{%endstylesheets%}
{%endblock%}

我也有同样的问题。正如本文中所评论的,您的资产URL必须是绝对的

这可以在symfony中使用资产细枝功能和“包URL”实现:

例如:

<link rel="stylesheet" type="text/css" href="{{ asset('bootstrap/css/bootstrap.css') }}">
如果您在本地配置中,那么在配置文件中,您应该使用不同的URL,例如:

    - "http://localhost/myproject/web/"

请注意,在使用Symfony 2.7时,Twig删除了asset()函数的绝对参数

<link rel="stylesheet" type="text/css" href="{{ absolute_url(asset('bootstrap/css/bootstrap.css')) }}">


有关更多信息,请参阅。

什么为您提供了“app.request.host”?仅适用于2.5版及以上版本我收到了一个超时。有什么想法吗?@Soullivaneuh完全取决于你到目前为止做了什么。最好的办法是检查以确保您可以通过浏览器正确打开CSS。如果可以的话,我会把它作为一个问题发布。请看这个答案,为我提供一个可移植的解决方案。这会引发一个小树枝错误(symfony 2.8),我使用这个解决方案:
href=“{{app.request.scheme~”:/“~app.request.httpHost~asset_url}”
<link rel="stylesheet" type="text/css" href="{{ absolute_url(asset('bootstrap/css/bootstrap.css')) }}">