vue3中使用print-js组件实现打印操作

news/2025/2/10 9:14:32/

第一步:安装依赖

javascript">yarn add print-js

第二步:创建打印组件:PrintHtmlComp.vue

javascript"><template><div id="printArea_123456789"><!--  默认插槽,传入打印内容    --><slot></slot></div>
</template>
<script setup lang="ts">
import printJs from 'print-js';defineOptions({ name: 'PrintHtmlComp' });
const props = defineProps({fontSize: {type: Number,default: 14,required: false,},
});const handlePrint = () => {printJs({printable: 'printArea_123456789', // 打印区域的idtype: 'html',scanStyles: true,targetStyles: ['*'], // 使用dom的所有样式,很重要font_size: props.fontSize + 'px', // 字体大小 --很重要,这里字体要和css中字体大小保持一致,默认是16px});
};
defineExpose({ handlePrint });
</script>

 第三步:处理打印预览的界面 PrintPop.vue

这个界面的的样式调整直接关系到打印的样式的,即想要打印什么样的效果就在这个界面怎么调试。

javascript"><el-dialog v-model="state.dialogVisible" :destroy-on-close="true" :title="state.title" width="780px" @close="close"><PrintHtmlComp ref="printRef"><!---这里是想要打印的--><div style="font-size: 20px">HELLO WORLD</div><div style="font-size: 20px">HELLO WORLD</div><div style="font-size: 20px">HELLO WORLD</div><div style="font-size: 20px">HELLO WORLD</div><div style="font-size: 20px">HELLO WORLD</div><div style="font-size: 20px">HELLO WORLD</div><div style="font-size: 20px">HELLO WORLD</div></PrintHtmlComp><template #footer><el-button @click="close">取 消</el-button><el-button :loading="state.saveLoading" type="primary" @click="handlePrint">打 印</el-button></template></el-dialog><script lang="ts" setup>
import { reactive, ref } from 'vue';defineOptions({ name: 'WorkApplyPlanPrint' });const state = reactive({dialogVisible: false,
});const showEdit = async () => {state.dialogVisible = true;
};const close = () => {state.dialogVisible = false;
};// 打印功能的函数
const handlePrint = async () => {printRef.value?.handlePrint();
};defineExpose({ showEdit });
</script>

HTML展示效果

打印预览效果:

 完成,功德+1。

关于遇到的问题以及解决方法,后续更新!!!!


http://www.ppmy.cn/news/1570820.html

相关文章

Android studio 编译速度增加

在gradle.properties增加如下代码&#xff0c;作用看注释 # Gradle 和 Kotlin 支持增量编译&#xff0c;只编译有改动的部分 kotlin.incrementaltrue # Gradle 支持并行构建&#xff0c;充分利用多核 CPU org.gradle.paralleltrue # Gradle 构建缓存可以缓存任务输出&#xff…

深度学习的图像生成

以下将分别使用 PyTorch 和 TensorFlow 实现基于深度学习的图像生成&#xff0c;这里主要介绍生成对抗网络&#xff08;GAN&#xff09;和变分自编码器&#xff08;VAE&#xff09;两种经典模型。 使用 PyTorch 实现简单的 GAN 进行图像生成 1. 安装必要的库 pip install to…

51单片机之使用Keil uVision5创建工程以及使用stc-isp进行程序烧录步骤

一、Keil uVision5创建工程步骤 1.点击项目&#xff0c;新建 2.新建目录 3.选择目标机器&#xff0c;直接搜索at89c52选择&#xff0c;然后点击OK 4.是否添加起吊文件&#xff0c;一般选择否 5.再新建的项目工程中添加文件 6.选择C文件 7.在C文件中右键&#xff0c;添加…

【数据结构】(7) 栈和队列

一、栈 Stack 1、什么是栈 栈是一种特殊的线性表&#xff0c;它只能在固定的一端&#xff08;栈顶&#xff09;进行出栈、压栈操作&#xff0c;具有后进先出的特点。 2、栈概念的例题 答案为 C&#xff0c;以C为例进行讲解&#xff1a; 第一个出栈的是3&#xff0c;那么 1、…

Linux 创建进程 fork()、vfork() 与进程管理

Linux 创建进程 fork、vfork、进程管理 一、Linux的0号、1号、2号进程二、Linux的进程标识三、fork() 函数1、基本概念2、函数特点3、用法以及应用场景&#xff08;1&#xff09;父子进程执行不同的代码&#xff08;2&#xff09;进程执行另一个程序 4、工作原理 四、vfork() 函…

个人毕业设计--基于HarmonyOS的旅行助手APP的设计与实现(挖坑)

在行业混了短短几年&#xff0c;却总感觉越混越迷茫&#xff0c;趁着还有心情学习&#xff0c;把当初API9 的毕业设计项目改成API13的项目。先占个坑&#xff0c;把当初毕业设计的文案搬过来 摘要&#xff1a;HarmonyOS&#xff08;鸿蒙系统&#xff09;是华为公司推出的面向全…

Spring Boot整合DeepSeek实现AI对话

本篇博文会分为DeepSeek开放平台上的API&#xff0c;以及本地私有化部署DeepSeek R1模型两种方式来整合使用&#xff0c;本地化私有部署可以参考这篇博文&#xff1a;DeepSeek介绍及使用ollama本地化部署DeepSeek-R1大模型 Spring AI Spring AI 是由 Spring&#xff08;一个广…

我们来学人工智能 -- 将Ollama已下载的模型从C盘迁出

题记 未配置OLLAMA_MODELS系统变量导致模型下载到了C盘 迁移步骤 退出ollama 配置OLLAMA_MODELS系统变量 OLLAMA_MODELS&#xff1a;D:\ollama\models 直接将C盘下的models目录剪切到指定目录 检查 cmd命令窗口退出重新打开