如何在Yii2中打印QR码?

时间:2016-05-13 13:39:16

标签: javascript php jquery yii2

我想用这个来源打印QR码图片:

<img class="qrCode" src="<?=Url::to(['site/qrcode', 'code' => $model->id])?>"/>

控制器:

public function actionQrcode($code) {
 return QrCode::jpg($code);
}

enter image description here

但在打印页面中,图片不显示。

enter image description here

Js代码:

        function printDiv(el) {
            var restorepage = document.body.innerHTML;
            var printcontent = document.getElementById(el).innerHTML;
            document.body.innerHTML = printcontent;
            window.print();
            document.body.innerHTML = restorepage;
        }

2 个答案:

答案 0 :(得分:0)

我认为这不是Yii2的问题,我认为问题出在你的JS中。

我猜几个变种:​​

  1. $('.qrCode').attr("src", '<?= Url::to(['site/qrcode', 'code' => $model->id]) ?>'); - 你确定行正常吗?我的意思是它真的改变了你的图像的SRC .qrCode?网址是否正确?
  2. 如果代码行正常,我认为问题是因为在window.print触发之前图像没有及时加载。所以我的建议是改变代码:
  3. function printDiv(el) {
      var qrImage = new Image();
      // wait 'till image loads
      qrImage.onload= function() {
        var restorepage = document.body.innerHTML;
        var printcontent = document.getElementById(el).innerHTML;
        document.body.innerHTML = printcontent;
        $('.qrCode').attr("src", qrImage.src);
        window.print();
        document.body.innerHTML = restorepage;
      }
      qrImage.src = '<?= Url::to(['site/qrcode', 'code' => $model->id]) ?>'; 
    }

答案 1 :(得分:0)

您可以使用以下代码打印QR码数据

              $image = Yii::$app->params['BASE_URL'] . 'abc.png';
              $qrcode = new \Zxing\QrReader($image);
              $text = $qrcode->text();