先创建一个vue项目,管理员打开cmd,输入命令:vue create project1。创建完成后用IDEA打开项目。

一、安装

管理员打开cmd,进入项目内,输入如下命令

vue2.x

npm install vue-print-nb –save

vue3.x

npm install vue3-print-nb --save

二、在main.js文件中注册

vue2.x

import Print from 'vue-print-nb'
Vue.use(Print);

vue3.x

import { createApp } from 'vue'
import App from './App.vue'
import print from 'vue3-print-nb'
const app = createApp(App)
app.use(print)
app.mount('#app')

三、使用

修改About.vue文件如下:

页面中使用,给需要打印的容器加一个id,打印按钮传入这个id

<template>
  <div class="about">
    <div id="printMe" style="background:red;">
      <p>葫芦娃,葫芦娃</p>
      <p>一根藤上七朵花 </p>
      <p>小小树藤是我家 啦啦啦啦 </p>
      <p>叮当当咚咚当当 浇不大</p>
      <p> 叮当当咚咚当当 是我家</p>
      <p> 啦啦啦啦</p>
      <p>...</p>
      <div class="describle">
        <el-form :model="form" :rules="rules" ref="from" class="demo-ruleForm">
          <el-form-item label="姓名:" prop="name">
            <el-input v-model="form.name"></el-input>
          </el-form-item>
          <el-form-item label="描述:" prop="describle">
            <el-input
                :disabled="detail"
                type="textarea"
                :rows="4"
                :maxlength="2000"
                placeholder=""
                v-model="form.describle">
            </el-input>
          </el-form-item>
        </el-form>
      </div>
    </div>

    <button v-print="'#printMe'">Print local range</button>
  </div>
</template>
<script>

export default {
  name: 'About',
  data(){
    return{
      form: {}
    }
  }
}
</script>

四、运行项目

访问:http://localhost:8080/,页面如下所示:

点击print local range按钮,如下所示:

点击打印,保存pdf,打开pdf,如下所示:

 

六、html中打印使用步骤

标签

<input type="button" value="打印" onclick="printpage()" class="print-button"/>
<!--startprint-->
<div id="section-to-print">
    ......
</div>
<!--endprint-->

样式

.print-button {
            /* 基础样式 */
            background: linear-gradient(to bottom, #4a8cff, #2a6dda); /* 蓝色渐变 */
            color: white;
            border: none;
            border-radius: 6px; /* 圆角 */
            padding: 12px 28px; /* 舒适的填充 */
            font-size: 16px;
            font-weight: 600; /* 加粗字体 */
            cursor: pointer;
            box-shadow: 0 4px 6px rgba(42, 109, 218, 0.3); /* 匹配背景色的阴影 */
            transition: all 0.3s ease; /* 平滑过渡效果 */

            /* 文字样式 */
            letter-spacing: 0.5px;
            text-transform: uppercase; /* 大写字母 */
            font-family: 'Segoe UI', 'Microsoft YaHei', sans-serif; /* 现代字体 */
        }
        .print-button:hover {
            background: linear-gradient(to bottom, #3a7cff, #1a5dc9); /* 悬停时变深 */
            transform: translateY(-2px); /* 轻微上浮 */
            box-shadow: 0 6px 8px rgba(42, 109, 218, 0.4); /* 加大阴影 */
        }

        .print-button:active {
            transform: translateY(1px); /* 点击下沉效果 */
            box-shadow: 0 2px 4px rgba(42, 109, 218, 0.3); /* 减少阴影 */
        }

        .print-button:focus {
            outline: none;
            box-shadow: 0 0 0 3px rgba(74, 140, 255, 0.5); /* 聚焦光环效果 */
        }

方法:

function printpage() {
        let oldStr = window.document.body.innerHTML; // 获取body的内容
        let start = "<!--startprint-->"; // 开始打印标识, 17个字符
        let end = "<!--endprint-->"; // 结束打印标识
        let newStr = oldStr.substr(oldStr.indexOf(start) + 17); // 截取开始打印标识之后的内容
        newStr = newStr.substring(0, newStr.indexOf(end)); // 截取开始打印标识和结束打印标识之间的内容
        window.document.body.innerHTML = newStr; // 把需要打印的指定内容赋给body
        window.print(); // 调用浏览器的打印功能打印指定区域
        window.document.body.innerHTML = oldStr; // body替换为原来的内容
    }

 

posted on 2021-07-08 09:50  周文豪  阅读(4034)  评论(0)    收藏  举报