使用javascript在客户端打印PDF文件

问题描述:

我想在客户端使用javascript打印pdf文件。我的JavaScript代码如下使用javascript在客户端打印PDF文件

function doit() { 
    var win = document.getElementById("pdf"); 
    var frm = document.getElementById("pdf").contentWindow; 
    frm.print(); 
    win.print(); 
}   

的问题是,FRM总是空和胜利没有打印的功能

我的PDF元素如下

<iframe id="pdf" name="pdf" src="C:\My_P.pdf"></iframe> 

我打电话从c#的功能如下

ClientScript.RegisterStartupScript(this.GetType(), "Print", "doit();", true); 

真的很挣扎。请帮忙

+0

我的框架从客户端加载和函数doit在加载pdf之前被调用。你能看到iframe中的pdf内容吗? – Anil

+0

编号错误是不允许加载本地资源:file:/// C:/_temp/My_P.pdf。我改变了目录,认为我不应该从C: – user2837961

你的问题的解决方案是I帧加载后调用打印功能,您可能不需要使用从服务器调用它RegisterStartupScript

<iframe id="pdf" name="pdf" src="C:\My_P.pdf" 
    onload="doit();"></iframe> 

另一个问题似乎是src路径C:\My_P.pdf,我期待一个网址显示内容。请参考Iframe

为了减轻这一点,请创建一个目录,例如MyResource在您的asp.net项目中,并将您的PDF复制到此目录并更改src =“/ MyResource/My_P.pdf”。您的pdf应该是浏览器可以访问的,然后只有Iframe可以加载它。

+0

这是否意味着文件必须位于服务器端? – user2837961

+0

是的,它可以位于通过URL访问iframe的任何服务器上。 – Anil

+0

问题是加载到iframe中。我看不到PDF。我在我的Web应用程序\\ WebApplication \ bin \ Temp中创建了一个目录,并将pdf放入Temp目录。它不加载它。打印对话框出现,其底部的aspx链接显示空白 – user2837961

您是否受到same origin policy的阻碍?

在过去,我已经使用:

window.frames["pdf"].focus(); 
window.frames["pdf"].print(); 
+0

加载我试过了。不起作用 – user2837961