当前位置:首页 > 前端教程

elementui打印

2026-03-05 18:43:49前端教程

打印整个页面

使用浏览器自带的打印功能(window.print())可以打印整个页面。在Element UI项目中,直接调用该方法会打印当前渲染的DOM内容,包括导航栏、侧边栏等。

// 触发浏览器打印
const handlePrint = () => {
  window.print();
};

注意事项

  • 打印时会包含页面上所有可见元素,需通过CSS隐藏非目标内容。
  • 建议在打印前动态修改DOM或通过CSS媒体查询隐藏无关部分。

打印特定DOM元素

若需仅打印部分内容(如表单、表格),可通过以下步骤实现:

  1. 提取目标HTML
    使用document.getElementByIdref获取DOM节点内容。

  2. 创建打印窗口
    在新窗口中写入目标HTML,并调用打印功能。

    elementui打印

const printElement = (elementId) => {
  const printContent = document.getElementById(elementId).innerHTML;
  const originalContent = document.body.innerHTML;
  document.body.innerHTML = printContent;
  window.print();
  document.body.innerHTML = originalContent; // 恢复原页面
};

优化方案

  • 使用iframe替代直接修改body.innerHTML,避免页面闪烁。
  • 通过CSS注入确保打印样式(如隐藏按钮、调整边距):
    @media print {
      .no-print { display: none; }
      body { margin: 0; }
    }

打印Element UI表格

针对el-table,需处理分页数据以确保打印完整内容:

  1. 临时修改分页
    若表格有分页,打印前需将所有数据渲染到同一页。
const printTable = (tableRef) => {
  const table = tableRef.value;
  const originalPageSize = table.pageSize;
  table.pageSize = table.total; // 临时显示全部数据
  await table.doLayout(); // 确保表格重新渲染
  window.print();
  table.pageSize = originalPageSize; // 恢复分页
};
  1. 处理表格样式
    通过CSS强制显示表格边框和背景(打印时可能丢失):
    @media print {
      .el-table td, .el-table th {
        border: 1px solid #000 !important;
        background-color: #fff !important;
      }
    }

使用第三方库(vue-print-nb)

对于复杂需求,推荐使用专用库如vue-print-nb

elementui打印

  1. 安装依赖

    npm install vue-print-nb --save
  2. 注册指令

    import Vue from 'vue';
    import Print from 'vue-print-nb';
    Vue.use(Print);
  3. 绑定打印区域

    <template>
      <div id="print-area">
        <!-- 需要打印的内容 -->
        <el-table data="tableData"></el-table>
      </div>
      <el-button v-print="'#print-area'">打印</el-button>
    </template>

优势

  • 自动处理样式隔离和分页问题。
  • 支持自定义打印前/后的回调函数。

常见问题解决

  • 样式丢失:确保打印媒体查询中重置关键样式(如颜色、边框)。
  • 分页截断:通过CSS设置page-break-inside: avoid防止内容被分割。
  • 图片不显示:检查图片路径是否为绝对路径,或使用Base64编码。

通过上述方法,可灵活实现Element UI项目的打印需求,从简单页面到复杂表格均可覆盖。

标签: elementui
分享给朋友:

相关文章

elementui特色

elementui特色

组件化设计 Element UI 提供丰富的组件库,包括表单、表格、导航、通知等常用 UI 元素。所有组件均采用模块化设计,支持按需引入,减少项目体积。 响应式布局 组件默认适配不同屏幕尺寸,内置栅…

elementui表头

elementui表头

ElementUI 表头自定义方法 修改表头样式 通过 header-cell-class-name 属性为表头单元格添加自定义类名,配合 CSS 实现样式修改。例如更改背景色和字体: .el-ta…

elementui多选

elementui多选

ElementUI 多选组件使用指南 ElementUI 提供了 el-select 组件支持多选功能,通过设置 multiple 属性即可启用。以下是具体实现方法和常见场景示例: 基础多选实现 设…

elementui keyup

elementui keyup

监听键盘事件的方法 在Element UI中监听键盘事件(如keyup)可以通过原生Vue事件绑定或Element UI组件提供的native修饰符实现。以下是具体方法: 1. 在普通HTML元素上…

elementui标志

elementui标志

Element UI 的标志 Element UI 的标志通常由以下元素组成: 一个简洁的字母 "E" 设计,带有现代感和科技感 配色以蓝色为主,符合其技术类 UI 框架的定位 标志整体风格简约,体…

elementui 1.0

elementui 1.0

Element UI 1.0 简介 Element UI 1.0 是基于 Vue.js 2.0 的早期版本组件库,发布于2016年,提供了一套桌面端UI组件,如表单、表格、弹窗等。其设计风格简洁,适合…