2011-11-07 68 views
1

我希望能够在用户单击打印按钮时自动打印PDF文档。目前我做这件事的方式是渲染PDF并保存到服务器磁盘并使其显示在iframe中,然后尝试使用javascript:print()打印iframe的内容。然而,打印的是一个空的html页面。在IE6中以编程方式自动打印PDF

我这样做是因为使用规范HTML打印破坏了我试图打印的网页的布局。所以我将页面渲染成pdf格式来打印网页。我不希望用户能够保存PDF,因此我试图打印PDF页面。因此我通过更改后面的代码中的src并重新呈现页面,然后触发js脚本,将它加载到iframe中。

function printPDF(){ document.iframe_printArea.focus(); document.iframe_printArea.print(); }

我想知道是否可以打印()在使用iframe的打印加载PDF文档还是这甚至有可能。我已经广泛地使用了这个,并且还没有提出适用于Web应用程序的任何解决方案。大部分资源专门用于C#windows应用程序。我使用的平台是.NET C#。

+2

无论谁让你支持IE6需要知道他们正在支持一个垂死的事业。 http://www.ie6countdown.com/ – epascarello

+0

[如何从浏览器打印PDF]的可能重复(http://stackoverflow.com/questions/205180/how-to-print-a-pdf-from-the浏览器) – epascarello

+0

浏览器的打印方法无法访问由PDF插件显示的内容。所以,这不会打印PDF。无法直接从网页打印到客户端上的打印机,因为这打破了[浏览器安全模型](http://www.gnostice.com/nl_article.asp?id=145&t=Limitations_of_Web_Applications)。您可以做的最好做法是创建一个[自动打印PDF文档](http://www.gnostice.com/nl_article.asp?id=157&t=Create_an_Auto-Print_PDF),当它显示在Adobe Reader(插件或独立应用程序)会自动触发一个打印对话框提示。 – BZ1

回答

0

首先,我非常抱歉不得不面对IE6。

有一个由Microsoft开发的非标准DOM事件,在打印之前触发。这是onbeforeprint事件(docs)。你可以做的是隐藏除iframe之外的所有内容,并在打印之前将iframe缩小到窗口大小。并在打印后将文档反转为正常的雕像并使用onafterprint事件。

function window.onbeforeprint() 
{ 
    // hide other elements and shrink the iframe 
} 

function window.onafterprint() 
{ 
    // unde what heppened onbeforeprint 
} 
+0

如果你想要更多的帮助,我可以做一个例子小提琴 – Mohsen

+0

你为什么要这样做?您打印iframe或将PDF设置为自动打印。另外,它不会打印iframe高度的100%,仅打印可见部分。 – epascarello

+0

,因为如果你重定向到PDF文件的url,那么你想念你的JavaScript后面!我的意思是把iframe'height'缩小到'document.scrollHeight'不是'100%'。 – Mohsen