找回密码
 立即注册

QQ登录

只需一步,快速开始

sssssss

金牌服务用户

135

主题

346

帖子

1189

积分

金牌服务用户

积分
1189
sssssss
金牌服务用户   /  发表于:2024-9-14 10:49  /   查看:271  /  回复:4
本帖最后由 sssssss 于 2024-9-14 10:52 编辑

使用


public getScreenshotBlbo() {
    return new Promise(function (resolve, reject) {
        let sheet = window.spread.getActiveSheet()
        let oldPrintInfo = window.sheet.printInfo();
        let printInfo = new GC.Spread.Sheets.Print.PrintInfo()
        //打印质量大于4时才会生成图片
        printInfo.qualityFactor(5)
        printInfo.margin({
            top: 0,
            bottom: 0,
            left: 0,
            right: 0,
            header: 0,
            footer: 0
        });
        printInfo.showColumnHeader(GC.Spread.Sheets.Print.PrintVisibilityType.hide)
        printInfo.showRowHeader(GC.Spread.Sheets.Print.PrintVisibilityType.hide)
        printInfo.paperSize(new GC.Spread.Sheets.Print.PaperSize(GC.Spread.Sheets.Print.PaperKind.a3))
        printInfo.showBorder(false)
        printInfo.showGridLine(true)
        let selection = window.sheet.getSelections()[0]
        printInfo.rowStart(selection.row);
        printInfo.rowEnd(selection.row + selection.rowCount - 1);
        printInfo.columnStart(selection.col);
        printInfo.columnEnd(selection.col + selection.colCount - 1);
        printInfo.fitPagesTall(1);
        printInfo.fitPagesWide(1);

        window.sheet.printInfo(printInfo)
        window.spread.bind(GC.Spread.Sheets.Events.BeforePrint + ".screenshot", (s, e) => {
          console.log(s,e, 'sdfeefee')
            let iframe = e.iframe
            let imgs = iframe.contentWindow.document.getElementsByTagName("img")
            if (imgs && imgs.length) {
                let img = imgs[0]
                console.log(img)
                let canvas = document.createElement("canvas")
                canvas.height = img.naturalHeight
                canvas.width = img.naturalWidth
                let ctx = canvas.getContext('2d')
                if (ctx) {
                  ctx.fillRect(0, 0, canvas.width, canvas.height);
                  ctx.drawImage(img, 0, 0);
                  for (let i = 0; i <= canvas.height; i += 180) {
                    for (let j = 0; j <= canvas.width; j += 130) {
                      ctx.save();
                      ctx.translate(j, i);
                      ctx.rotate(-20 * Math.PI / 180);
                      ctx.fillStyle = 'rgba(0, 0, 0, 0.05)';
                      ctx.font = '16px Vedana';
                      ctx.fillText(localStorage.getItem('oa'), 0, 0);
                      ctx.restore();
                    }
                  }
                  canvas.toBlob((blob) => {
                      resolve(blob)
                      // navigator.clipboard.write([
                      //         new ClipboardItem({
                      //         [blob.type]: blob
                      //         })
                      //     ]);
                  })
                  e.cancel = true
                  window.spread.unbind(GC.Spread.Sheets.Events.BeforePrint + ".screenshot")
                  window.sheet.printInfo(oldPrintInfo)
                }
            }
        })
        window.spread.print(window.spread.getActiveSheetIndex());
    });
  }
这个方法截图,多选里的颜色没有了,如何解决
image.png116317442.png






spjs.json

1.4 MB, 下载次数: 7

4 个回复

倒序浏览
Wilson.Zhang
超级版主   /  发表于:2024-9-14 15:25:00
沙发
您好!我们测试下先,后续及时向您同步结论。
回复 使用道具 举报
Ellia.DuanSpreadJS 开发认证
超级版主   /  发表于:2024-9-14 18:12:21
板凳
您好,执行附件后的demo后,结果如下:
print (1).jpeg

多选背景色_下载图片.html (12.84 KB, 下载次数: 6)
回复 使用道具 举报
sssssss
金牌服务用户   /  发表于:2024-9-19 11:01:03
地板
Ellia.Duan 发表于 2024-9-14 18:12
您好,执行附件后的demo后,结果如下:

我们现在实现的方案,item的颜色不是固定,而是opitons里的通过value去匹配text然后渲染颜色,可以用我给你的json试一下,详情见截图
image.png494274596.png
回复 使用道具 举报
Ellia.DuanSpreadJS 开发认证
超级版主   /  发表于:2024-9-19 12:19:45
5#
您提供的json文件已经没有背景色了,请提供一个完整的可以复现问题的demo。

image.png141877135.png
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 立即注册
返回顶部