美文网首页
JS canvas明信片绘制以及打印

JS canvas明信片绘制以及打印

作者: 安徒生1997 | 来源:发表于2021-03-06 15:49 被阅读0次

<head>

    <meta charset="UTF-8" />

    <meta name="viewport" content="width=device-width, initial-scale=1.0" />

    <meta http-equiv="X-UA-Compatible" content="ie=edge" />

    <title>明信片打印</title>

</head>

<style>

body {

    background: rgb(204, 204, 204);

    text-align: center;

}

* {

    padding: 0;

    margin: 0;

}

page[size="A4"] {

    background: white;

    width: 710px;

    height: 1045px;

    display: block;

    margin: 0 auto;

    margin-bottom: 0.5cm;

    padding-top: 0px;

    box-sizing: border-box;

}

img {

    width: 100%;

    height: 100%;

}

@media print {

    body,

    page[size="A4"] {

        margin: 0;

        box-shadow: 0;

    }

}

</style>

<body>

    <page size="A4" id="Canpage">

        <img src="http://www.xxxxx.com/public/Htpublic/img/postcard.png" alt="" id="CanImg" />

    </page>

    <canvas id="myCanvas" width="710" height="1045"></canvas>

</body>

</html>

<script src="https://cdn.bootcss.com/jquery/3.4.1/jquery.js"></script>

<script>

    // window.print()

    $("#Canpage").css('display','none');

    var c=document.getElementById("myCanvas");

    var ctx=c.getContext("2d");

    // 绘制照片

    var img = new Image();

// 图片地址

    img.src = 'http://www.xxxxx.com/public/Htpublic/img/postcard.png';

    img.onload = function() {

    ctx.drawImage(img,0,0,710,1045);

        // 绘制邮编

        ctx.font="30px Arial";

        // 邮编字符串转换为数组

        const converToArray = number => [...`123465`].map(el => parseInt(el));

        let pcode1 = converToArray('123465');

        // "1    2    3    4    6    5"

        ctx.fillText(pcode1[0]+'    '+pcode1[1]+'    '+pcode1[2]+'    '+pcode1[3]+'    '+pcode1[4]+'    '+pcode1[5] ,40,86,300);

        // 绘制收件地,超出宽度进行文字换行

        ctx.font="24px Arial";

        let AddText = '12345';

        let AddCanWidth = 295;

        let AddInitHeight=140;

        let AddStrIndex= 0;

        let AddlineWidth = 0;

        for(let i=0;i<AddText.length;i++){

          AddlineWidth+=ctx.measureText(AddText[i]).width;

          if(AddlineWidth>AddCanWidth){ 

            ctx.fillText(AddText.substring(AddStrIndex,i),26,AddInitHeight);

            AddInitHeight+=60;

            AddlineWidth=0;

            AddStrIndex=i;

          }

          if(i==AddText.length-1){

            ctx.fillText(AddText.substring(AddStrIndex,i+1),26,AddInitHeight);

          }

        };

        // 绘制内容,超出宽度进行文字换行

        ctx.font="24px Arial";

        let TextText = '123456';

        let TextCanWidth = 640;

        let TextInitHeight=370;

        let TextStrIndex= 0;

        let TextlineWidth = 0;

        for(let i=0;i<TextText.length;i++){

          TextlineWidth+=ctx.measureText(TextText[i]).width;

          if(TextlineWidth>TextCanWidth){ 

            ctx.fillText(TextText.substring(TextStrIndex,i),26,TextInitHeight);

            TextInitHeight+=57;

            TextlineWidth=0;

            TextStrIndex=i;

          }

          if(i==TextText.length-1){

            ctx.fillText(TextText.substring(TextStrIndex,i+1),26,TextInitHeight);

          }

        };

        // 绘制姓名

        ctx.font="24px Arial";

        ctx.fillText("46578",560,730,120);

        // 绘制日期

        ctx.font="24px Arial";

        ctx.fillText("89456",560,790,120);

    };

    setTimeout(()=>{

        var dataImg = c.toDataURL('image/png');

        console.log(dataImg)

        $("#Canpage").css('display','block');

        $('#CanImg').attr('src',dataImg);

        $('#myCanvas').css("display","none");

        setTimeout(()=>{

            window.print()

        },1500)

    },1500)

</script>

相关文章

网友评论

      本文标题:JS canvas明信片绘制以及打印

      本文链接:https://www.haomeiwen.com/subject/rgfsqltx.html