如何删除href“打印”HTML到PDF?

时间:2014-06-19 11:01:48

标签: javascript html css

我构建HTML页面,我想让用户将HTML“打印”为PDF,而不嵌入HREF链接(因为它们链接到内部服务器,我不希望PDF的读者看到这些链接)。

在Chromium中,生成的PDF文件嵌入了href链接。

是否可以通过Javascript的CSS删除href?

我试过了:

<a class="no_print" href="javascript:printPreview()">Print Preview</a>

<script>
function printPreview() {
    var aTags = document.getElementsByTagName('a');
    var atl = aTags.length;
    var i;

    for (i = 0; i < atl; i++) {
        aTags[i].href = ''; 
    }
}
</script>

但是不起作用。

- 编辑:找到解决方案后,这是一个完整的例子 -

<!DOCTYPE html>
<html><header>
    <title>x</title>
    <style>
        @media print { .no_print { display: none; }
    </style>
    <script>
function printPreview()
{
    var aTags = document.getElementsByTagName('a');
    var atl = aTags.length;
    var i;

    for (i = 0; i < atl; i++) {
        aTags[i].removeAttribute("href");   
    }
}
    </script>

</head>
<body>
    <a class="no_print" href="javascript:printPreview()">Print Preview</a>
    <br>
    <a href="http://example.com">link to somewhere</a>
    <br>
    <a>anchor but no link</a>
    <br>
    other text...
</body>
</html>

4 个答案:

答案 0 :(得分:2)

你可以在JS下面试试

 function printPreview() {
    document.getElementsByTagName('body a').each(function(index, element) {
     element.removeAttribute('href');
    });
}

上面的代码将删除body内所有锚点的href属性。

答案 1 :(得分:1)

试试吧。那可能吗?

<强> HTML

<a class="no_print" href="javascript:printPreview">Print Preview</a>

<强> JS

function printPreview() {
    document.getElementsByTagName('a').removeAttribute("href");
}

答案 2 :(得分:1)

以下是可以正常使用的代码。

<html>
  <a class="no_print" href="javascript:printPreview()">Print Preview</a>

  <script>
  function printPreview() {
     var aTags = document.getElementsByTagName('a');
     var atl = aTags.length;
     var i;

     for (i = 0; i < atl; i++) {
        **aTags[i].removeAttribute("href");**
     }  
  }
  </script>    
</html>

答案 3 :(得分:0)

纯css解决方案:

@media print {
    a:after {
        display: none !important;
    }
}