vue2+printJs插件实现网络打印

这篇具有很好参考价值的文章主要介绍了vue2+printJs插件实现网络打印。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

一.Print.js介绍

Print.js 主要是为了帮助我们直接在我们的应用程序中打印 PDF 文件,无需离开界面,也无需使用嵌入。 对于用户无需打开或下载 PDF 文件而只需打印它们的特殊情况。
支持“pdf”、“html”、“image”和“json”四种打印文档类型。默认为“pdf”。

 PrintJS参数配置表

参数 默认值 描述
printable null 文档来源:pdf 或图片 url、html 元素 id 或 json 数据对象。
type ‘pdf’ 可打印类型。可用的打印选项有:pdf、html、image、json 和 raw-html。
header null 用于与 HTML、图像或 JSON 打印的可选标题。它将被放置在页面顶部。此属性将接受文本或原始 HTML。
headerStyle ‘font-weight: 300;’ 要应用于标题文本的可选标题样式。
maxWidth 800 最大文档宽度(以像素为单位)。根据需要更改此设置。在打印 HTML、图像或 JSON 时使用。
css null 应用于正在打印的 html 的 css 文件 URL。值可以是具有单个 URL 的字符串或具有多个 URL 的数组。
style null 自定义样式的字符串。应用于正在打印的 html。
scanStyles true 设置为 false 时,库将不会处理应用于正在打印的 html 的样式。在使用 css 参数时很有用。
targetStyle null 默认情况下,库仅在打印 HTML 元素时处理某些样式。此选项允许您传递要处理的样式数组。例如:[‘padding-top’, ‘border-bottom’]
targetStyles null 与 targetStyle 相同,但是,这将处理任意范围的样式。例如:[‘border’, ‘padding’],将包括’border-bottom’、‘border-top’、‘border-left’、‘border-right’、‘padding-top’等。也可以通过 [’*'] 来处理所有样式。
ignoreElements [ ] 传入打印父 html 元素时应忽略的 html id 数组。使其不打印。
properties null 打印 JSON 时使用。这些是对象属性名称。
gridHeaderStyle ‘font-weight: bold;’ 打印 JSON 数据时网格标题的可选样式。
gridStyle ‘border: 1px solid lightgray; margin-bottom: -1px;’ 打印 JSON 数据时网格行的可选样式。
repeatTableHeader TRUE 打印 JSON 数据时使用。设置为 false 时,数据表标题将仅显示在第一页。
showModal null 启用此选项可在检索或处理大型 PDF 文件时显示用户反馈。
modalMessage Retrieving Document…’ 当 showModal 设置为 true 时向用户显示的消息。
onLoadingStart null 加载 PDF 时要执行的功能
onLoadingEnd null 加载 PDF 后要执行的功能
documentTitle Document’ 打印 html、图像或 json 时,这将显示为文档标题。
fallbackPrintable null 打印 pdf 时,如果浏览器不兼容(检查浏览器兼容性表),库将在新选项卡中打开 pdf。这允许您传递要打开的不同pdf文档,而不是在printable中传递的原始文档。如果您在备用pdf文件中注入javascript,这可能很有用。
onPdfOpen null 打印 pdf 时,如果浏览器不兼容(检查浏览器兼容性表),库将在新选项卡中打开 pdf。可以在此处传递回调函数,该函数将在发生这种情况时执行。在某些情况下,如果要处理打印流、更新用户界面等,它可能很有用。
onPrintDialogClose null 在浏览器打印对话框关闭后执行的回调函数。
onError error => throw error 发生错误时要执行的回调函数。
base64 false 在打印作为 base64 数据传递的 PDF 文档时使用。
honorMarginPadding (已弃用) true 这用于保留或删除正在打印的元素中的填充和边距。有时这些样式设置在屏幕上很棒,但在打印时看起来很糟糕。您可以通过将其设置为 false 来将其删除。
honorColor (已弃用) false 若要以彩色打印文本,请将此属性设置为 true。默认情况下,所有文本都将以黑色打印。
font(已弃用) TimesNewRoman’ 打印 HTML 或 JSON 时使用的字体。
font_size (已弃用) 12pt’ 打印 HTML 或 JSON 时使用的字体大小。
imageStyle(已弃用) width:100%;’ 打印图像时使用。接受具有要应用于每个图像的自定义样式的字符串。
<Button custom-icon="iconfont icon-dayinji_o"
                                    :disabled="loading"
                                    class="mr-10"
                                    size="small"
                                    type="info"
                                    @click="handlePrint(printData)">
                                打印
                            </Button>
// 打印数据
			printData: {
				printable: 'printFrom',
				// header:'再生资源收货单',
				ignore: ['no-print'],
				type: 'html' // 打印的元素类型
			},

// printJs插件
		handlePrint(params) {
			var printFrom = document.getElementById('printFrom')
			printFrom.style.display = 'block'
			setTimeout(() => {
				printFrom.style.display = 'none'
			}, 2000)
			// print.js的onPrintDialogClose事件触发失效,在打印事件触发之前,添加派发一个focus聚焦事件,然后点击取消或打印,清除focus事件。
			let focuser = setInterval(
				() => window.dispatchEvent(new Event('focus')),
				500
			)
			printJS({
				printable: params.printable, // 'printFrom', // 标签元素id
				type: params.type || 'html',
				header: params.header, // '表单',
				targetStyles: ['*'],
				style: '@page {margin:0 10mm};', // 可选-打印时去掉眉页眉尾
				ignoreElements: params.ignore || [], // ['no-print']
				properties: params.properties || null,
				//打印完成或关闭打印的事件
				onPrintDialogClose: () => {
					//取消打印回调
					//清除focus事件
					clearInterval(focuser)
					printFrom.style.display = 'none'
				}
			})
		},

二、安装/引入

方法1.下载print.js

  1. 从官网下载Print.js,将下载的 print.js 放入项目utils文件夹
  2. 可以全局引入即(在main.js中引入),也可以在需要的文件里面引入import Print from './utils/print'

方法2.使用npm安装print插件

  1. 使用npm安装print-js npm install print-js --save
  2. 可以全局引入即(在main.js中引入),也可以在需要的文件里面引入 import Print from 'print-js'

三、使用示例

弹出打印预览界面,在表单页面中调用打印方法,弹出窗右边栏调整打印界面。

printjs,前端,javascript,html

 文章来源地址https://www.toymoban.com/news/detail-730387.html

 <!-- 打印表格 -->
                    <div id="printFrom"
                         style="display:none">
                        <br />
                        <br />
                        <br />
                        <h1 class="title">再生资源收货单</h1>
                        <table class="table"
                               border="1"
                               cellspacing="0"
                               id="tab">
                            <thead>
                                <tr>
                                    <th colspan="1">收货单号</th>
                                    <td colspan="3"></td>
                                    <th colspan="1">收货日期</th>
                                    <td colspan="4"></td>
                                </tr>
                                <tr>
                                    <th colspan="1">客户名称</th>
                                    <td colspan="3">{{queryData.userName}}</td>
                                    <th colspan="1">联系方式</th>
                                    <td colspan="4"></td>
                                </tr>
                                <tr>
                                    <th colspan="1">身份证/税号</th>
                                    <td colspan="3"></td>
                                    <th colspan="1">订单号</th>
                                    <td colspan="4"></td>
                                </tr>
                            </thead>
                            <thead>
                                <tr>
                                    <th>序号</th>
                                    <th>货品名称</th>
                                    <th>规格</th>
                                    <th>单位</th>
                                    <th>数量</th>
                                    <th>单价(元)</th>
                                    <th>金额(元)</th>
                                    <th>备注</th>
                                    <th>订单时间</th>
                                </tr>
                            </thead>

                            <tbody>
                                <tr v-for="(item, index) in list.tableData"
                                    style="page-break-inside: avoid;"
                                    key="index">
                                    <!-- th有文字居中的作用 -->
                                    <th>{{ index + 1}}</th>
                                    <th>{{item.goodsTypeName}}</th>
                                    <th></th>
                                    <th>Kg</th>
                                    <th>{{item.netWeight}}</th>
                                    <th>{{item.unitPrice}}</th>
                                    <th>{{parseInt(item.netWeight*item.unitPrice)}}</th>
                                    <th></th>
                                    <th>{{item.createTime|formatDate('yyyy-MM-dd')}}</th>
                                </tr>
                                <tr>
                                    <th colspan="4">合计</th>
                                    <th>{{totalWeight}}</th>
                                    <th></th>
                                    <th>{{totalPrice}}</th>
                                    <th></th>
                                    <th></th>
                                </tr>
                            </tbody>
                          
                        </table>
</div>

到了这里,关于vue2+printJs插件实现网络打印的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【Vue】使用print.js插件实现打印预览功能,超简单

    目录 一、实现效果  二、实现步骤 【1】安装插件 【2】在需要打印的页面导入 【3】在vue文件中需要打印的部分外层套一层div,给div设置id。作为打印的区域 【4】在打印按钮上添加打印事件 【5】在methods中添加点击事件 三、完整代码   print.js插件,可以打印html、pdf、json数

    2024年02月14日
    浏览(49)
  • 前端实现websocket通信讲解(vue2框架)

    前言 :最近接到的需求是前端需要实现一个全局告警弹窗,如果使用ajax请求http接口只能用定时器定时去请求是否有告警,这样既消耗资源,又不能实时监测到告警信息。所以这个时候就可以采用websocket来实现通信,因为websocket不用请求一次才响应一次,它可以实现服务器主

    2024年02月12日
    浏览(37)
  • Vue前端实现excel的导入、导出、打印功能

    导入导出依赖: npm install xlsx@0.16.9 npm install xlsx-style@0.8.13 --save 安装xlsx-style,运行报错 This relative module was not found: ./cptable in ./node_modules/xlsx-style@0.8.13@xlsx-style/dist/cpexcel.js 解决报错 在node_modulesxlsx-styledistcpexcel.js 807行 的 var cpt = require(\\\'./cpt\\\' + \\\'able\\\'); 改为: var cpt = cptable; 打印

    2023年04月08日
    浏览(47)
  • Vue2实现仿小米商城练手项目前端篇(2-首页实现)

    去年寒假里学习了 Vue.js ,开学后想做一个完整的练手项目实战一下,最后决定模仿小米手机官网做一个网站项目,具体参考了Github上一位作者的项目。 现在已经基本完成了,分享在CSDN作为学习记录。 技术支持 :该项目采用前后端分离的设计结构,使用 Vue2 + Vue-Router + Vue

    2024年02月09日
    浏览(82)
  • 微前端qiankun架构 (基于vue2实现)使用教程

    node -- 16+ @vue/cli -- 5+ 创建文件夹qiankun-test。 使用vue脚手架创建主应用main和子应用dev   安装 qiankun: 使用qiankun: 在 utils 内创建 微应用文件夹 microApp,在该文件夹内创建微应用出口文件 index.js,路由文件 microAppRouter,配置函数文件 microAppSetting。 路由文件 microAppRouter 配置函数文件

    2023年04月19日
    浏览(49)
  • Vue2 +Element-ui实现前端页面

    以一个简单的前端页面为例。主要是利用vue和element-ui实现。 里面涉及的主要包括:新建vue项目、一行多个输入框、页面实现等。   ①首先安装nodejs,这部分在此就不讲啦。 ②然后安装vue-cli: 查看是否安装成功: 安装成功之后就输出vue的版本 ③在cmd窗口新建一个vue2脚手架

    2024年02月16日
    浏览(45)
  • vue2项目导出操作实现(后端接口导出、前端直接做导出)

    实现效果:导出列表数据 导出的内容: 后台相对来说比较简单一点,只要后端配合写接口即可 代码:放在导出事件里进行调整即可完成导出效果 效果如上:个人认为调接口导出的表格更美观一点 操作如下: 首先安装我们需要的xlxs库: 接着在我们项目文件夹/src/assets/js创建

    2024年04月11日
    浏览(46)
  • vue2&vue3 el-table实现整行拖拽排序功能(使用sortablejs插件)

    Vue3组件地址 Vue2组件地址 Vue2基于ElementUi再次封装基础组件文档 vue3+ts基于Element-plus再次封装基础组件文档

    2024年02月08日
    浏览(58)
  • vue2实现海康威视根据海康插件进行监控实时预览和回放功能,全套代码,开箱即用。

     这是一套拿到手就能直接用的根据海康提供的摄像机节点实时预览和回放的全步骤代码,开箱即用。  我的是基于vue2写的,vue3可以看我下一篇文章。 很多人在开发vue项目的时候,不知道怎么去开发视频实时预览和回放功能,然后一直查文档,再去看别人写的项目,就是无

    2023年04月15日
    浏览(80)
  • 【vue2】纯前端实现本地的pdf/word/epub文件预览

    需求是预览本地的pdf/word/epub格式的文件,但是搜索后发现没有可以直接使用的,格式不同,显示的方式和效果也都略有不同。 最后还是 分别实现预览 的功能。 如果只需要预览pdf/word等格式的话,可以使用的方案:vue-office,支持多种文件(docx、excel、pdf)预览的vue组件库,支持

    2024年02月11日
    浏览(76)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包