当前位置:首页 > 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
分享给朋友:

相关文章

vue图片实现多选

vue图片实现多选

Vue图片多选实现方法 基础实现方案 使用v-model绑定数组配合input[type="checkbox"]实现多选功能。创建图片列表数据时,每个图片对象应包含唯一标识符: data() {…

js实现图

js实现图

JavaScript 实现图的常用方法 在 JavaScript 中,图(Graph)可以通过多种方式实现,常见的包括邻接表(Adjacency List)和邻接矩阵(Adjacency Matrix…

js画图实现

js画图实现

使用Canvas API绘制图形 Canvas是HTML5提供的绘图API,通过JavaScript操作Canvas元素可以绘制各种图形。以下是一个简单的示例: <canvas id="myC…

利用js实现

利用js实现

使用 JavaScript 实现 在 JavaScript 中,可以通过多种方式实现功能,具体取决于需求。以下是几种常见的方法: 方法一:使用原生 JavaScript // 示例代码 funct…

js实现目录

js实现目录

实现目录的基本思路 在JavaScript中实现目录功能通常涉及以下几个核心步骤:解析文档中的标题元素(如h1-h6),动态生成目录结构,并添加交互逻辑(如点击跳转)。以下是具体实现方法: 解析标题…

vue实现图片闪烁

vue实现图片闪烁

实现图片闪烁效果的方法 在Vue中实现图片闪烁效果可以通过CSS动画或JavaScript动态控制样式。以下是几种常见方法: CSS动画实现 通过@keyframes定义闪烁动画,并应用到图片元素上…