当前位置:首页 > JavaScript

js实现打印图片

2026-03-01 09:47:41JavaScript

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

在JavaScript中,可以通过window.print()方法触发浏览器的打印功能。要打印图片,可以将图片放入一个专门用于打印的容器中。

<img id="printImage" src="your-image.jpg" style="display:none;">
<button onclick="printImage()">打印图片</button>

<script>
function printImage() {
  const img = document.getElementById('printImage');
  img.style.display = 'block';

  window.print();

  img.style.display = 'none';
}
</script>

使用CSS控制打印样式

通过CSS的@media print规则可以专门为打印设置样式,确保图片在打印时正确显示。

@media print {
  body * {
    visibility: hidden;
  }
  #printImage, #printImage * {
    visibility: visible;
  }
  #printImage {
    position: absolute;
    left: 0;
    top: 0;
    width: 100%;
  }
}

创建打印专用iframe

更可靠的方法是在内存中创建一个iframe,将图片放入其中后打印,避免影响主页面。

js实现打印图片

function printImage(url) {
  const iframe = document.createElement('iframe');
  iframe.style.display = 'none';
  document.body.appendChild(iframe);

  iframe.onload = function() {
    const doc = iframe.contentWindow.document;
    doc.open();
    doc.write('<html><body><img src="' + url + '" style="width:100%;"></body></html>');
    doc.close();

    iframe.contentWindow.focus();
    iframe.contentWindow.print();

    setTimeout(() => {
      document.body.removeChild(iframe);
    }, 1000);
  };

  iframe.src = 'about:blank';
}

处理多图片打印

要打印多张图片,可以将它们放入一个容器中统一处理。

function printImages(imageUrls) {
  const printWindow = window.open('', '_blank');
  printWindow.document.open();

  let html = '<html><body>';
  imageUrls.forEach(url => {
    html += `<img src="${url}" style="display:block; width:100%; margin-bottom:20px;">`;
  });
  html += '</body></html>';

  printWindow.document.write(html);
  printWindow.document.close();

  printWindow.onload = function() {
    printWindow.print();
    printWindow.close();
  };
}

使用canvas打印动态内容

对于需要从canvas导出的图片,可以先将其转换为数据URL再打印。

js实现打印图片

function printCanvas(canvas) {
  const dataUrl = canvas.toDataURL('image/png');
  const printWindow = window.open('', '_blank');

  printWindow.document.write(`
    <html>
      <body>
        <img src="${dataUrl}" style="width:100%;">
      </body>
    </html>
  `);

  printWindow.document.close();
  printWindow.print();
  printWindow.close();
}

注意事项

打印功能依赖于浏览器实现,不同浏览器可能有不同行为。某些浏览器可能会阻止弹出窗口,需要用户允许。

对于跨域图片,可能会遇到安全限制。确保图片与页面同源或服务器已配置CORS允许访问。

考虑添加打印按钮的状态管理,防止用户在打印过程中重复点击。

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

相关文章

vue实现图片取色

vue实现图片取色

Vue 实现图片取色功能 使用 Canvas API 提取颜色 在 Vue 项目中,可以通过 Canvas API 实现图片取色功能。创建一个组件,利用 ref 获取图片元素并绘制到 Canvas 上…

vue实现拖动图片验证

vue实现拖动图片验证

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

js实现轮播

js实现轮播

实现轮播图的基本思路 轮播图的核心逻辑是通过定时切换展示的图片或内容,通常结合左右滑动按钮和指示器(小圆点)增强交互性。以下是基于原生JavaScript的实现方法。 HTML结构 构建轮播图的HT…

js实现图片预览

js实现图片预览

使用FileReader API实现图片预览 通过FileReader对象读取用户选择的图片文件并显示预览: const input = document.getElementById('image…

js实现图片放大缩小

js实现图片放大缩小

实现图片放大缩小的基础方法 使用CSS的transform: scale()属性可以快速实现图片的放大缩小效果。通过JavaScript动态修改该属性值: const img = document.…

js实现换肤

js实现换肤

使用CSS变量实现换肤 通过CSS变量可以轻松实现主题切换功能。CSS变量在根元素中定义,通过JavaScript动态修改这些变量值。 :root { --primary-color: #349…