2014-10-20 30 views
0

我正在更新旧的应用程序,并被要求更改旧的Print例程(它只是通过javascript调用打印命令并打印出html) (理论上说,我们可以在所有打印机上控制pdf /它的外观等等)。自动打印页面,然后转到下一页

使用Rotativa库,我可以生成我的PDF,可以在飞行或文件中生成。

做一些阅读后,它似乎不可能流从内存中的PDF格式,它有一个文件被创建首先,发送到浏览器,然后删除。)

我的控制器的最后一行是;

return File(@"D:\Development\Source\Workspaces\ConsumerCreditLicenseSystem\Code\ConsumerCreditSystem\CCLSystem\_Idd\1.pdf", "application/pdf"); 

我在努力的是让页面调用打印对话框。如果我把它发送到一个新的视图与JavaScript来做到这一点,那么我回到原点,因为该网页是HTML而不是我的PDF。有没有什么办法可以标记我的PDF是打印,或用一些HTML结合起来,所以我可以有

window.print(); 
文档中

老忠实?

回答

0

PDF不是一个网页;这是一个二进制。当您向用户发送PDF作为响应时,您无法控制他们的结局。如果他们的浏览器能够在适当位置查看PDF,则会显示它;否则,它会提示用户下载它。无论哪种方式,用户是否要打印它都取决于用户,而且他们也可以返回或者返回。此时您无法自动重定向用户。

稍微好一点的选择是将用户重定向到另一个页面,并链接到一个将PDF发送给他们的视图。然后,您可以执行诸如强制PDF下载(所以不会在同一个标​​签页/窗口内呈现,有效地将用户带离您的网站),也可以强制链接在新标签页或窗口中打开。但是,您仍然无法提示用户进行打印。

+0

我想'force'是一个不正确的短语。他们已经点击了“打印”链接,所以我需要做的是将HTML转换为PDF(我已经完成),然后得到打印。如果那是不可能的,那么我将不得不坚持原来的方法,看看我能否整理一下印刷的CSS。 – Matt 2014-10-20 15:40:31

+0

是的,不,提示用户打印出来。你所能做的就是发送PDF,让他们决定他们想要做什么。如果你需要弹出打印对话框,那么你需要坚持一个基于HTML的视图。 – 2014-10-20 15:51:11