编辑:如果您使用的是Bootstrap,则很可能是导致此问题的原因。阅读here。
我正在尝试使用KnpSnappyBundle生成一个twig模板的PDF。
问题是,生成的PDF除了生成链接文本之外还显示实际链接,如下图所示:
wkhtmltopdf中是否有此选项?我使用wkhtmltopdf -H
查看了这些选项,disable-external-links
和disable-internal-links
都没有解决此问题。
以下是我用于生成PDF的代码:
$this->get('knp_snappy.pdf')->generateFromHtml(
$this->renderView(
$template,
array(
$key => $array
)
),
$this->container->getParameter("upload_dir") . '/' . $file,
array(
"print-media-type" => true,
"disable-external-links" => true,
"disable-internal-links" => true
)
);
HTML:
<a href="{{ path('work_descriptions') }}#{{ value.descriptionId }}" target="_blank" class="work-link"><strong><u>{{ title }}</u></strong></a>
是的,我知道{{ title }}
值不包含实际链接,因为当我在链接标记之外使用它时,PDF显示正常。
我正尽力避免使用hacky解决方案,但我不确定问题是什么。
更新:无论是否使用树枝变量,问题都会发生。
答案 0 :(得分:1)
我最终做的是添加另一个变量发送到模板,让它知道何时模板将用于PDF,然后在检查变量是否已定义后运行相应的JavaScript以删除链接。
在PDF生成动作中:
$this->get('knp_snappy.pdf')->generateFromHtml(
$this->renderView(
"my-template.html.twig",
array(
"templateData" => array(
"data" => $session->get("templateData"),
"pdf" => true //<--------- Check this variable in template
)
),
),
$this->container->getParameter("upload_dir") . '/' . $file,
array(
"print-media-type" => true,
"disable-external-links" => true,
"disable-internal-links" => true
)
);
在Twig:
{% if templateData.pdf is defined %}
<script>
$(".work-link").each(function()
{
$(this).prop("href", "#");
});
</script>
{% endif %}
现在这似乎工作正常。