Twig 链接显示在生成的 PDF 中

Twig links being displayed in generated PDF

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

我正在尝试使用 KnpSnappyBundle 生成树枝模板的 PDF。

问题是生成的 PDF 在生成时除了显示所有 link 的 link 文本外,还显示实际的 link,如下图所示:

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 }} 值不包括实际的 link,因为当我在 link 标签之外使用它时,PDF 显示正常。

我正在尽最大努力避免使用 hacky 解决方案,但我不确定问题出在哪里。

更新:无论是否使用 twig 变量都会出现此问题。

我最后做的是添加另一个变量发送到模板,让它知道模板何时用于 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 %}

目前看来还可以。