最近在做个项目,涉及到一个展示打印预览的问题,现在知道有两种解决方案:
第一个是调用word中的PrintPreview打印预览功能,这种方法显示没问题,但是在点击关闭以后会显示所预览的word文档,还要再点击关闭当前的文档,而且还有可能对文档进行修改,我理解可能是因为先调用了word应用程序而后从外部操作打开office自带的预览功能,这种方式用户体验度不好;
第二个是.net中的PrintPreviewDialog控件,他的显示效果完全是我想要的样子,但是需要关联PrintDocument,而这个PrintDocument如何指定我本地的word文档呢(test.doc)??现在显示的预览效果是空白的~~
综上呢 我只是想单机按钮,显示本地word的打印预览模式,并且不显示word文档!有高手能帮我解决这个问题吗?或者有其他解决方案也可以,在此谢过了,这个问题已经琢磨好几天了,一直没有好办法实现!
第二个方法肯定是行不通的,因为.net提供的PrintDocument类是让你自己向画布里面画你要打印东西的。怎么可能自己把word的内容画到里面去呢。所以这个是不行了。
还有一种思路,但是没有验证过,楼主可以试试,利用WebBrowser控件,可以把word显示到这个控件里面,这个控件本身有打印以及预览等功能。
楼主遇到的第一给问题可以这样解决:在 try...catch语句块的finally中添加一个循环:while (wApp.PrintPreview){}。如果用户关闭预览窗口,PrintPreview的值为false,跳出循环后,再执行关闭word文档的操作。
finally
{
if (wApp != null)
{
while (wApp.PrintPreview)
{
//这里这么做是因为在用户关闭了预览窗口后,却打开了word文档,但是要求必须在用户关闭预览窗口后不能打开文档的
}
wApp.Quit();
System.Runtime.InteropServices.Marshal.ReleaseComObject(wApp);
wApp = null;
}
GC.Collect();
}