我想通过SharePoint Workflow打开文件(docx,pdf,...)的打印对话框。在那里我用GET调用一个URL并在之后传递文件的URL?像这样:
编辑:我也尝试过:http://www.sharepoint_intranet.com/print.html?link-to-file.pdf
<script type="text/javascript">
//Get the URL of the file
var urlOfFile = window.location.search.replace("?", "");
document.write("<iframe id=" + "printDocument" + " src=" + "'" + urlOfFile + "'" + " width=" + "600" + " height=" + "400" + "></iframe>");
window.frames['printDocument'].focus();
window.frames['printDocument'].print();
</script>
“打印”对话框正在打开,在打印选项中,选择了“仅选定框架”点,但是当我按下打印按钮时,不会发生任何事情。
感谢您的帮助!
答案 0 :(得分:1)
问题是新的url在当前脚本块完成执行之前不会开始加载。因此,当您致电w.print()
时,新窗口当前为空白。
尝试:
<script type="text/javascript">
//Get the URL of the file
var urlOfFile = window.location.search.replace("?", "");
//print
var w = window.open(urlOfFile);
w.onload = function() {
w.print();
}
</script>
编辑:我没有正确地阅读这个问题!以上技术仅适用于html。解决这个问题的方法是使用iframe,如果我们使用iframe,我们也可以完全免除弹出窗口。以下代码创建一个iframe,其源设置为所需文档,将iframe附加到页面(但保持不可见),打印iframe的内容,最后在完成iframe后删除iframe。仅在Chrome中测试过,但我相信它可以在其他浏览器中使用。
<script type="text/javascript">
//Get the URL of the file
var urlOfFile = window.location.search.replace("?", "");
//print
var iframe = document.createElement('iframe');
iframe.src = urlOfFile;
iframe.style.display = "none";
var iFrameLoaded = function() {
iframe.contentWindow.print();
iframe.parentNode.removeChild(iframe);
};
if (iframe.attachEvent) iframe.attachEvent('onload', iFrameLoaded); // for IE
else if(iframe.addEventListener) iframe.addEventListener('load', iFrameLoaded, false); // for most other browsers
else iframe.onload = iFrameLoaded; // just in case there's a browser not covered by the first two
window.onload = function() {
document.body.appendChild(iframe);
};
</script>
答案 1 :(得分:1)
你可以放入html的正文
<body onLoad="window.print();">
所以页面打开已打印文档。
答案 2 :(得分:-1)
我们可以给出文件的路径,如(“abc.doc”/“abc.xls”)
var urlOfFile = window.location.search.replace(“?”,“”);