Winny 发表于 2022-3-8 16:10:22

SpreadJS打印预览

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/

页: [1]
查看完整版本: SpreadJS打印预览