我想从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>
希望有人可以帮助我..
PS:抱歉打字错误,英语不是我的母语。
答案 0 :(得分:14)
提供绝对参数会更容易:
<link rel="stylesheet" type="text/css" href="{{ asset('bootstrap/css/bootstrap.css', absolute=true) }}">
答案 1 :(得分:11)
必须使用绝对路径链接资产。所以而不是:
<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">
我自己就是这个问题,这对我来说已经解决了。
答案 2 :(得分:5)
在使用Symfony 2.7时请注意,Twig已删除asset()函数的绝对参数。
armeabi
有关详细信息,请参阅New in Symfony 2.7: the new Asset component。
答案 3 :(得分:2)
@ user1805558的回答对我有用。我也使用Less,并使用了这个,有些人可能会觉得有用:
{% 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 %}
答案 4 :(得分:0)
UP资产调用中的绝对期权:
<img src="{{ asset('/assets/img/AVNZ-Logo-H-SMALL.jpg', absolute=true) }}">
与官方捆绑回购相关: https://github.com/KnpLabs/KnpSnappyBundle/issues/78
答案 5 :(得分:0)
我遇到了同样的问题。正如此issue中所述,您的资产网址必须是绝对的。
这可以使用资产 twig功能和“包网址”在symfony中完成:
http://symfony.com/doc/current/reference/configuration/framework.html#assets-base-urls
例如:
<link rel="stylesheet" type="text/css" href="{{ asset('bootstrap/css/bootstrap.css') }}">
然后,在 app / config / config.yml
中framework:
# ...
templating:
assets_base_urls:
http:
- "http://yourdomain.com/"
如果您使用的是本地配置,则在 config_dev.yml 中,您应使用其他网址,例如:
- "http://localhost/myproject/web/"