在Angularjs中为iframe打印功能

时间:2018-02-14 11:59:34

标签: angularjs iframe printing cross-domain same-origin-policy

我必须打印"using"中的特定文件。

我的view_file.ejs:

iframe

这里img(我在urlencode.encode中使用的变量)是来自aws s3 bucket的链接

打印按钮:

<div id="viewframe"> 
<iframe id="viewfile"  name="viewfile" src='https://docs.google.com/viewer?url=<%= urlencode.encode(img) %>&embedded=true' style="width: 100%;height:900px" frameborder="0" scrolling="no" seamless="" allowfullscreen="allowfullscreen">
</iframe>
</div>

我的app.js:

<div class="right_blk">
                    <span class="versions"><a ng-click="printdoc('viewframe')" href="javascript:void(0)" >Print</a></span>   
</div>

我从这里尝试过很多解决方案,但对我来说没什么用。有办法做到这一点吗?

更新

$scope.printdoc1=function(doc)
{

   window.frames["viewfile"].focus();
   window.frames["viewfile"].print();
}

我收到此错误。

1 个答案:

答案 0 :(得分:0)

<iframe id="viewfile"  name="viewfile" src='https://docs.google.com/viewer?url=<%= urlencode.encode(img) %>&embedded=true' style="width: 100%;height:900px" frameborder="0" scrolling="no" seamless="" allowfullscreen="allowfullscreen">

不要将id作为参数传递,而是执行此操作:

 <span class="versions"><a  ng-click="printdoc()" href="javascript:void(0)" >Print</a></span>

这是你使用Javascript:

的方式
function printdoc()
{
   document.getElementById("viewfile").contentWindow.print(); //Iframe id
}

如果是Jquery:

$("#viewfile").get(0).contentWindow.print();

试试这个。希望它有所帮助..!