用window.open另外打开一个窗口,把要打印的东西传过去。打开打印预览画面后,关闭那个画面。这样就能用预览画面打开了。。。结果关闭那个画面之后,打印预览也没了。。。
因为js可以调用的打印预览是基于WebBrowser,如果是模态窗口(showModalDialog)的话,子画面是无论如何也调不出来的,子画面直接调不出打印预览的,我看到网上无数人都困扰这个问题好久。WebBrowser这个东东,只有父画面有。
我的方法:
假设,a画面window showModalDialog打开b画面。a父画面,b子画面。a把自己的document以参数形式传递给b。把子画面的内容赋给父画面的document参数,并调用打印。但是,要使父画面内容不被打印出来,子画面内容不被显示到父画面里面上,可以通过css来控制。下面是具体实现。
window showModalDialog(url,document,width,heigth);
b画面获取这个参数var documentObj = window.dialogArguments
这样的话。。。documentObj .all.WebBrowser.ExecWB(7,1)就能打印东东了,这个段思路来自网友,他可能实现的是要打印父画面的内容。但是如果是要打印子画面的内容,就要稍微多做点事情。
在a画面上,把现在画面上的元素,最外层套一个div,或者其他什么。给个id叫,parentHtml。给个css:noPrint
在画面最下面画一个隐藏div,给个id叫childHtml。给个css:noDisplay。
定义好css
@media Print
{
.noPrint {
DISPLAY: none;
}
@media Screen
{
.noDisaplay {
DISPLAY: none;
}
然后,猥琐的办法。。。
在子画面上使用documentObj.getElementById("parentHtml")获得父画面的显示内容对象,给它加个class “noPrint”。
然后
documentObj.getElementById("childHtml").insertAdjacentHTML("beforeEnd",document.body.innerHtml)。
把子画面body里的内容复制到父画面的childHtml里去。
然后,documentObj .all.WebBrowser.execwb(7,1)。。。应该就能把子画面的内容显示到预览窗口里了。。。
最后再把parentHtml的noPrint去掉,以及childHtml里的内容删掉。
分享到:
相关推荐
当打印或者预览结束后,关闭自行创建的框架窗口CPrintPreviewFrameWnd,利用CViewPrintPreview类中实现保存的信息恢复主框架和用户对话框,恢复打印/预览前的环境。 代码(实现了第二个解决方法)在VC2010下编译...
3. **实现打印预览**:在按钮的点击事件处理函数中,我们需要调用打印预览的相关API,如`DeviceContext`、`DOCINFO`结构和`StartDoc`、`StartPage`、`EndPage`等函数来设置打印参数并渲染预览。同时,可能还需要创建...
在打印预览中,用户可以缩放、导航和调整设置,如页眉和页脚,而无需实际消耗纸张和墨水。 3. 演示代码(Demo Code): 这通常是一段为了展示特定功能或技术实现的代码,开发者可以通过它学习和理解如何在自己的...
在打印预览功能中,通常会使用模态对话框,因为用户需要专注于预览和设置打印选项。 2. **打印预览(Print Preview)**: 打印预览功能让用户在实际按下“打印”按钮前,看到文档在打印机上输出的预期效果。这包括...
本文通过对`PrintPreviewDialog`类及其内部`PreviewCanvas`类的详细分析,展示了Java中实现打印预览功能的方法。通过理解这些代码,开发者可以更好地掌握Java平台提供的打印及预览API,从而在自己的应用程序中实现...
4. **预览与弹窗**:为了提供预览功能,可以使用模态窗口或者新窗口打开打印内容,让用户确认打印设置。 5. **处理图片和链接**:确保在打印模式下图片和链接能够正常显示和工作,可能需要添加特定的CSS样式或者...
Dialog是一个模态窗口,通常用于显示一些需要用户交互或确认的信息。在EasyUI中,我们可以通过以下方式创建一个Dialog: ```html ;height:600px;"> $(function(){ $('#dialog').dialog({ title: 'Dialog标题', ...
这个自定义的Delphi报表预览窗体是为了实现套打功能而弄的,预览时先调用这个自定义的,实际打印时再调用默认的。这需要2个frxReport,其中一个的Preview属性需设为自定义的这个,另一个默认就行,然后在自定义那个...
5. **插件支持**:Ext4 Grid可能需要借助特定的插件来实现打印功能,如Ext.grid.plugin.Printer。这些插件通常会处理大部分细节,包括表头的重绘和数据的分页。 6. **用户交互**:提供清晰的打印按钮和提示,让用户...
2. 打印预览:在实际打印之前,可能会提供一个预览功能,让用户确认打印效果。 3. 页面设置:根据需求,组件可能提供了设置页边距、纸张方向等功能。 4. 处理打印错误:当打印出现问题时,需要有相应的错误处理机制...
总的来说,React中实现浏览器打印部分内容的关键在于创建一个隐藏的打印容器,动态地调整页面样式,并利用浏览器的`window.print()`方法启动打印预览。通过合理的CSS控制,可以确保打印内容与屏幕显示保持一致,提供...
而printPreview()方法用于实现打印预览功能,其参数与print()方法类似,但不包含isShowPrinterDialog参数。 在实际的二次开发过程中,开发者需要理解以上概念,并根据具体业务需求编写集成代码,以实现套打功能。...
3. **显示表单**:这次使用`Create()`函数而不是`DoModal()`,这将创建并显示一个非模态窗口。用户可以随时切换到这个窗口来修改属性。 ### 文件`PageDemo` `PageDemo`可能是一个示例项目,演示如何创建和使用这两...
4. **打印与预览(Printing and Preview)**:MFC提供了方便的打印支持,第10章可能介绍如何设置打印设备,创建打印作业,以及实现打印预览功能,确保用户可以在不同设备上正确打印文档。 5. **消息映射(Message ...
4. 在主窗口中创建自定义对话框的实例,并在合适的时候调用`exec()`(模态)或`show()`(非模态)方法显示对话框。 在学习和应用这个案例时,可以深入理解Qt的事件处理机制、信号和槽的概念,以及如何通过布局管理...
6. **打印和打印预览**:MFC提供了CPrintInfo、CPreviewDC等类来支持应用程序的打印功能和打印预览,使得用户可以在打印前查看文档的打印效果。 7. **数据库支持**:MFC通过引入CDatabase、CRecordset等类,提供了...
MFC简化了这个过程,通过打印机设备上下文和打印预览机制,使得开发者能够轻松实现打印文档。本章会讲解如何设置打印作业,实现打印对话框,以及如何处理打印和预览事件。 第11章主要讲解动态链接库(DLL)的使用。...
在Windows程序中,打印功能通常通过CView和CDocument类来实现,而MFC提供了CPreviewView类来实现打印预览。源代码会展示如何设置打印机设置,处理打印作业,以及创建打印预览界面。 5. **MFC ODBC数据库编程**:第...
7. **打印和打印预览**:MFC提供了一套完整的打印和打印预览支持,通过CView和CPrintInfo类可以实现文档的打印功能。 8. **数据库编程**:MFC通过ADO(ActiveX Data Objects)和DAO(Data Access Objects)接口,...
7. **打印和预览**:MFC提供CPrintInfo、CPrintDialog和CPreviewView等类,帮助开发者实现打印和打印预览功能。 8. **网络编程**:MFC的Internet支持包括CFtpConnection、CHttpConnection等类,方便进行FTP和HTTP...