none
Silverlight 2.0 页面打印控制 RRS feed

  • 问题

  • 如何使用Silverlight进行打印?也就是像JS一样调用打印机进行页面打印,然后获得打印完毕的信息?

    2009年7月8日 3:53

答案

  • 打印页面不是问题的关键问题,关键是比如你页面内有个TextBlock,这个TextBlock又有用了ScrollBar,而且内容有超出了页面大小,在SocrollBar里面需要滚动显示,这样你就无法很方便的打印出SocrllBar里面滚动的内容了,一般方法,只能调用javascript方法,打印出html页面:(

    而且由于程序设计的不同,比如你的LayoutRoot未设大小(即是默认100%填充)而且页面加载时也设置的百分比,可能页面浏览时候是正常的,但是调用JavaScript打印Html页面的时候,会被拉的很长,打印出的效果并不和浏览器看到的效果一样。

    所以大多数人都直接说Silverlight不支持打印功能(包括直接打印和间接调用JavaScript的打印)。

    > .< 希望楼主可以先需求其他解决办法,最好不要用Silverlight打印,呵呵,有啥关于Silverlight打印功能的,可以一起探讨:)
    2009年7月8日 13:21
    版主

全部回复

  • 如何使用Silverlight进行打印?也就是像JS一样调用打印机进行页面打印,然后获得打印完毕的信息?


    似乎js也没办法获得打印完毕的信息
    紫柔版主的头像真叫萌得一个不行啊。。。。
    答案800 撒花
    2009年7月8日 5:00
  • http://jonas.follesoe.no/PrintingInSilverlight2UsingCSSAndASPNETAJAX4.aspx
    在国外找到了一个打印的示例!有空我也会试一下的
    他里面有这样一行代码
    HtmlPage.Window.Invoke("updatePrint",dives.ToJons());
    这个Invoke我查了一下Silverlight 2的API ,Invoke里面是有一个返回值的。所以你可以让JS返回打印信息出来。


    ScriptObject..::.Invoke 方法
    对当前可脚本化对象调用一个方法,并且可以选择传入一个或多个方法参数。

    public virtual Object Invoke(
    	string name,
    	params Object[] args
    )
    这个我在CSDN里面找到的,JS完成后会调用的事件:
    http://topic.csdn.net/t/20060426/00/4713750.html


    这里面写了这样一句:“  2.   有一个   onafterprint   事件会被触发” 你可以试一下

    我还找了一个关于Js调用Silverlight的地址,你也可以看一下:
    http://www.cnblogs.com/zxjay/archive/2008/04/11/1200696.html

    加油!如果成功的话,发我一个demo呵呵!我没有打印机做这个测试!辛苦了!

    努力!写一个js解析器,一个svg插件,一个绘图程序,做好自己,呵呵~!
    2009年7月8日 12:45
    版主
  • 打印页面不是问题的关键问题,关键是比如你页面内有个TextBlock,这个TextBlock又有用了ScrollBar,而且内容有超出了页面大小,在SocrollBar里面需要滚动显示,这样你就无法很方便的打印出SocrllBar里面滚动的内容了,一般方法,只能调用javascript方法,打印出html页面:(

    而且由于程序设计的不同,比如你的LayoutRoot未设大小(即是默认100%填充)而且页面加载时也设置的百分比,可能页面浏览时候是正常的,但是调用JavaScript打印Html页面的时候,会被拉的很长,打印出的效果并不和浏览器看到的效果一样。

    所以大多数人都直接说Silverlight不支持打印功能(包括直接打印和间接调用JavaScript的打印)。

    > .< 希望楼主可以先需求其他解决办法,最好不要用Silverlight打印,呵呵,有啥关于Silverlight打印功能的,可以一起探讨:)
    2009年7月8日 13:21
    版主
  • 目前测试了一下使用SL调JS的方法,具体结果:

    1,像八爪说的那样,打印起来ScrollBar内的东西打不全.
    2,由于SL在HTML里以OBJECT形式存在所以打印的时候会有拉伸或缩放.
    3,如果固定SL OBJECT的宽高,在XAML里也同样定义好是可以完成打印的,但是打印效果不理想,虽然文字部分可以看清楚(黑白激光),但是我打印的内容中有条码,激光扫描枪无法识别.

    http://blog.csdn.net/evanlee617/archive/2008/12/17/3540829.aspx 本次主要参考的是这个文章来做的打印


    现在我已经放弃使用SL进行打印,直接传参到ASPX进行打印,灵活许多 ><!

    多谢天使和八爪的帮助,现在项目较急暂时略过这部分了,等到项目完毕后再仔细研究研究~ 0.0

    2009年7月9日 7:21