在生成的PDF中显示Twig链接

时间:2016-02-01 20:59:08

标签: php symfony twig wkhtmltopdf

编辑:如果您使用的是Bootstrap,则很可能是导致此问题的原因。阅读here

我正在尝试使用KnpSnappyBundle生成一个twig模板的PDF。

问题是,生成的PDF除了生成链接文本之外还显示实际链接,如下图所示:enter image description here

wkhtmltopdf中是否有此选项?我使用wkhtmltopdf -H查看了这些选项,disable-external-linksdisable-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解决方案,但我不确定问题是什么。

更新:无论是否使用树枝变量,问题都会发生。

1 个答案:

答案 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 %}

现在这似乎工作正常。