【问题标题】:Twig links being displayed in generated PDFTwig 链接显示在生成的 PDF 中
【发布时间】:2016-05-10 11:23:43
【问题描述】:

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

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

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

在 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 解决方案,但我不确定问题出在哪里。

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

【问题讨论】:

  • 如果不禁用内部/外部链接会发生什么?
  • 禁用外部/内部链接选项的唯一作用是删除点击 PDF 中链接的功能,不幸的是,无论哪种方式,文本都保持不变。
  • 我以前也遇到过这个问题,但我不记得是什么问题了。您在文档中提供的链接是否有效?
  • 是的,也没有收到任何关于它的 HTML 验证错误。绝对 URL 也没有区别。

标签: php symfony twig wkhtmltopdf


【解决方案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
            )
);

在树枝中:

{% if templateData.pdf is defined %}
   <script>
      $(".work-link").each(function()
      {
         $(this).prop("href", "#");
      });
   </script>
{% endif %}

这似乎目前还可以。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-10-23
    • 1970-01-01
    • 1970-01-01
    • 2016-05-07
    • 2015-12-21
    • 2023-04-04
    相关资源
    最近更新 更多