1、Silverlight的打印功能从版本5开始才支持矢量打印,这不但要求打印机支持矢量打印,而且还要安装相应的打印驱动程序。
测试你的打印机是否支持矢量打印,可以参考:如何用C#代码检测打印机和驱动是否支持PostScript
如果打印机不支持矢量打印,Silverlight会使用图片打印方式,特点是发送到打印机的文档体积很大。只能靠调低打印机的分辨率来解决。
2、打印的UI不要包含Effort等高级效果,例如阴影,动画等。或者在打印之前屏蔽掉。否则会造成打印失败。具体的表现是:使用windows XPS文档的虚拟打印机时,生成文档后,有自动消失了。造成有时打印正常,换个报表又失败了。
3、权限问题。由于Silverlight默认运行在沙箱环境中,默认的打印是要求弹出打印对话框的。只有提权成完全信任后,或者OOB模式才能使用默认打印机直接打印。当然,提权后,还可以通过平台调用来完成诸如设置打印方向,改变纸张大小,指定打印机打印等任务。
具体可参考: