当前位置:首页 > 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实现跳转

使用 window.location 跳转 通过修改 window.location.href 或直接使用 window.location 实现页面跳转,适用于普通跳转或带参数的 URL。 // 方…

css3结合js制作

css3结合js制作

CSS3 结合 JavaScript 制作动态效果 CSS3 和 JavaScript 结合可以实现丰富的动态效果,包括动画、交互和响应式设计。以下是几种常见的实现方式: CSS3 动画与 Java…

vue实现图片轮播

vue实现图片轮播

Vue 实现图片轮播的方法 使用第三方库(推荐) 安装 vue-awesome-swiper 库,这是基于 Swiper 的 Vue 封装: npm install swiper vue-aweso…

vue实现拖动图片验证

vue实现拖动图片验证

Vue 实现拖动图片验证功能 核心思路 拖动图片验证通常需要用户将图片拖动到指定区域或按正确顺序排列。实现时需要处理拖拽事件、验证逻辑和视觉反馈。 实现步骤 1. 基础组件结构 <templ…

js实现

js实现

实现 JavaScript 功能的方法 在 JavaScript 中实现特定功能通常涉及多个步骤。以下是常见的实现方法: 基础语法和变量声明 使用 let 或 const 声明变量: let co…

js实现tab选项卡切换

js实现tab选项卡切换

实现Tab选项卡切换的JavaScript方法 使用纯JavaScript实现Tab切换功能,可以通过监听点击事件动态切换内容显示状态。以下是两种常见实现方式: 基础DOM操作实现 /…