我正在尝试在asp.net webforms应用程序中打印从代码创建的pdf,但在实际打印之前我想显示打印预览弹出窗口,例如当我使用javascript的window.print()
基本上,我需要完全相同的弹出窗口,而不是更改我正常使用的页面,但是我不想在弹出窗口中显示我正在使用的页面,我想显示创建的PDF。
问题是我找不到任何能让我得到这个结果的东西。也许我不知道该找什么,所以提前感谢任何建议。
答案 0 :(得分:0)
window.open("path to pdf");
或window.location.href = "path to pdf";
这将在新窗口中打开您的pdf。我不知道打印预览,但它将允许他们查看生成的pdf。
答案 1 :(得分:0)
简短回答,不,打印预览是一种常见但可选的客户端功能和偏好,在不受控制的环境(Internet)中,您无法以编程方式访问。
如果您 拥有受控环境,那么您只需安装可以编程的自定义软件即可。但是,既然你在第一时间问我,我认为这不适合你。
正如@jaredlee.exe所说,你最好的办法是弹出一个新窗口,但不是直接链接到PDF,你可以尝试链接到一个包含整页iframe
或{{的简单页面。 3}}(或可能object
)指向您的PDF。然后,您可以绑定onload
(或onreadystatechange
或domcontentloaded
或其他任何事件)事件,以触发该特定对象的print()
方法。
所有人都说,要理解这一点非常重要,那就是具有原生渲染PDF功能的Web浏览器是一个相对较新的东西。 Adobe在90年代为IE(以及Netscape)发布了一个插件,多年来增加了Chrome和Firefox等新的浏览器。然而,加班,这些程序开始添加他们自己的PDF渲染器,一旦他们这样做,他们实际上禁用 Adobe。最重要的是,操作系统供应商(通常也是浏览器供应商)开始将原生PDF渲染器直接添加到他们的操作系统中。有些人(包括我自己)认为,与Adobe的参考渲染器相比,所有这些渲染器都显得很苍白,因此我们会在找到它们的地方禁用内置渲染器。所以对我来说(我知道我很奇怪)所有这些选项最多仍然会导致一个空窗口试图打印空白页面和下载的PDF。
为了重申上述内容,Web浏览器最常用于查看网页。当你切换到PDF时,你不再是“网络世界”,而是“PDF世界”,你不是在控制“网络浏览器”,而是“PDF渲染器”。不幸的是,那里没有与“PDF渲染器”交谈的规范,因为该领域仍然太新。
重申我的重述,这一切可能在某些或大部分时间都有效,但如果有完全失败的边缘情况也不要感到惊讶。