当前位置:首页 > JavaScript

js实现打印图片

2026-01-30 18:46:02JavaScript

使用window.print()方法打印图片

将图片放入一个可打印的容器中,通过CSS控制打印样式。示例代码如下:

js实现打印图片

function printImage(imageUrl) {
  const printWindow = window.open('', '_blank');
  printWindow.document.write(`
    <html>
      <head>
        <title>Print Image</title>
        <style>
          @media print {
            body { margin: 0; padding: 0; }
            img { max-width: 100%; height: auto; }
          }
        </style>
      </head>
      <body>
        <img src="${imageUrl}" />
      </body>
    </html>
  `);
  printWindow.document.close();
  printWindow.onload = function() {
    printWindow.print();
  };
}

使用Canvas转换后打印

对于需要调整图片尺寸或格式的情况,可以使用Canvas处理:

js实现打印图片

function printCanvasImage(url) {
  const canvas = document.createElement('canvas');
  const ctx = canvas.getContext('2d');
  const img = new Image();

  img.onload = function() {
    canvas.width = img.width;
    canvas.height = img.height;
    ctx.drawImage(img, 0, 0);

    const dataUrl = canvas.toDataURL('image/png');
    const printWin = window.open('');
    printWin.document.write(`<img src="${dataUrl}" />`);
    printWin.document.close();
    printWin.focus();
    printWin.print();
    printWin.close();
  };

  img.src = url;
}

使用CSS控制打印布局

通过创建专门的打印样式表确保图片正确输出:

<style id="printStyle">
  @media print {
    @page {
      size: auto;
      margin: 0mm;
    }
    body {
      display: flex;
      justify-content: center;
      align-items: center;
      height: 100vh;
    }
    .no-print {
      display: none;
    }
  }
</style>

<script>
function preparePrint(imageElement) {
  const clone = imageElement.cloneNode(true);
  document.body.innerHTML = '';
  document.body.appendChild(clone);
  window.print();
  location.reload();
}
</script>

处理跨域图片打印

当遇到跨域图片时,需要先通过服务器代理或CORS解决资源访问问题:

function printCrossOriginImage(url) {
  fetch(url, { mode: 'cors' })
    .then(response => response.blob())
    .then(blob => {
      const objectUrl = URL.createObjectURL(blob);
      const printWindow = window.open('', '_blank');
      printWindow.document.write(`<img src="${objectUrl}" />`);
      printWindow.document.close();
      printWindow.print();
      URL.revokeObjectURL(objectUrl);
    });
}

注意事项

  • 打印对话框的触发需要用户交互事件(如点击)
  • 移动端可能需要特殊处理打印样式
  • 某些浏览器会阻止弹出窗口,需要提前获得用户许可
  • 高质量打印建议使用原始分辨率图片
  • 考虑添加打印取消后的回调处理

以上方法可根据具体需求组合使用,实现不同场景下的图片打印功能。

标签: 图片js
分享给朋友:

相关文章

js实现验证码

js实现验证码

实现验证码的JavaScript方法 生成随机验证码 使用Math.random()生成随机字符串,结合数字和字母: function generateCaptcha() { const ch…

css图片按钮制作

css图片按钮制作

使用纯CSS创建图片按钮 通过CSS的background-image属性可以轻松将图片设置为按钮背景。关键点在于设置合适的尺寸、去除默认边框并添加交互状态: .image-btn { wid…

js实现倒计时

js实现倒计时

使用 setInterval 实现倒计时 通过 setInterval 定时器每秒更新剩余时间,适用于简单倒计时场景。 function countdown(seconds, callback)…

js实现日历

js实现日历

实现日历的基本思路 使用JavaScript实现日历的核心是动态生成日期表格,并处理月份切换逻辑。需要计算当前月的天数、起始星期几,并动态渲染到页面上。 获取当前日期信息 通过Date对象获取当前…

js实现复制到剪贴板

js实现复制到剪贴板

使用document.execCommand方法(传统方式,已废弃但部分浏览器仍支持) 该方法适用于旧版浏览器,但已被标记为废弃。执行前需确保文本已被选中: function copyToClip…

js 实现分页

js 实现分页

实现分页的基本逻辑 分页功能通常需要后端返回数据总量或总页数,前端根据当前页码和每页条数截取对应数据。以下是一个基于JavaScript的简单分页实现方案: 前端分页实现 假设已有从后端获取的完整数…