SpreadJS V15.0之后,在线表格设计器(designer)已经在UI行为上实现了打印预览的功能,具体如下图所示:
但是在很多使用场景中,用户可能并不会集成设计器,只是嵌入了表格区域,想要通过自己写一个按钮的方式,来实现打印预览的需求。本文会针对这一应用场景,提供一种实现打印预览的方式。
Step1: 监听beforePrint事件;
- spread.bind(GC.Spread.Sheets.Events.BeforePrint,function(e,data){
- sjsiframe = data.iframe
- sjsiframe.style.width = '800px'
- sjsiframe.style.height = '600px'
- sjsiframe.style.position = 'fixed'
- sjsiframe.style.top = '200px'
- sjsiframe.style.left = '200px'
- sjsiframe.style.background = '#ffffff'
- data.cancel = true
- })
复制代码 在BeforePrint事件中,data.iframe代表的是当前打印的dom结构,可以在控制台中的dom结构查看,默认这个iframe的宽高都是0,不会显示。因此需要在打印之前修改这个iframe的宽高,使其显示出来。
Step2: 实现打印逻辑;
- document.getElementById('preview').onclick = function(){
- let sheet = spread.getActiveSheet()
- let printInfo = new GC.Spread.Sheets.Print.PrintInfo()
- printInfo.showColumnHeader(GC.Spread.Sheets.Print.PrintVisibilityType.hide)
- printInfo.showRowHeader(GC.Spread.Sheets.Print.PrintVisibilityType.hide)
- sheet.printInfo(printInfo)
- spread.print()
- }
复制代码
完整的demo参考:https://jscodemine.grapecity.com/share/rL2Gldldckq6azOVP9vtEg/
|
|