weixin_61382411 2023-04-12 19:05 采纳率: 0%
浏览 24

关于window.print打印问题

请问哪位同行遇见过,js打印,window.print弹出新页面打印,使用document.write赋值,其中包含富文本框,里面有图片img,直接是图片地址,为什么第一次点击打印按钮,图片是空白;刷新打印弹出页,第二次点击打印按钮图片又好了,不知有什么处理方案,望各位指点一二,谢谢!

  • 写回答

1条回答 默认 最新

  • Mars空港 2023-04-13 09:12
    关注

    试一下

    
    function printCanvas (id, i) {
      var oldstr = document.body.innerHTML // 获取当前页面内容用以还原
      var div_print = document.getElementById(id) // 获取要打印部分的内容
      var cv = document.getElementsByTagName('canvas')[i] //获取canvas
      var resImg = document.getElementById(id) //获取包裹canvas的标签
      // 将canvas转为图片
      // var context = cv.getContext("2d")
      var img = new Image()
      var strDataURI = cv.toDataURL('image/png')
      img.src = strDataURI
      // 图片加载完成之后
      img.onload = function () {
        // 执行打印
        setTimeout(function () {
          resImg.innerHTML = `<img src="${strDataURI}" style=height:400px>` // 用图片替代canvas
          var newstr = div_print.innerHTML
          // newstr.style.height = '50vh'
          document.body.innerHTML = newstr // 将页面内容改为修改后的内容
          window.print() // 打印
          window.location.reload() // 重新加载页面
          document.body.innerHTML = oldstr // 将页面内容还原
        }, 1000)
      }
    }
    
    
    评论

报告相同问题?

问题事件

  • 创建了问题 4月12日