Php Symfony2 Knp snappy生成PDF文件';不导入CSS
我想从html.twig模板生成pdf,但出现问题 事实上,PDF已经创建好的内容,但没有布局。看起来CSS文件没有导入 我使用twitter的Bootstrap来管理布局 这是我控制器的一部分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(
$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')) }}">