葫芦娃,葫芦娃

一根藤上七朵花

小小树藤是我家 啦啦啦啦

叮当当咚咚当当 浇不大

叮当当咚咚当当 是我家

啦啦啦啦

...

:disabled="detail"

type="textarea"

:rows="4"

:maxlength="2000"

placeholder=""

v-model="form.describle">

Print local range

点击打印按钮,就可以打印页面了

   

在使用这个插件过程中遇到一个问题,普通的input标签内容展示没问题,textarea文本域这种内容就展示不出来,检查了一下插件,发现作者在给表单赋值的时候用的是value值,这种赋值对于一些双标签的表单就无效,需要修改一下

PS: 现在的新版本作者已经修复了这个问题,使用新版本的同学可以忽略

这种直接改包的方法也不太好,如果其他人下载你的代码,也需要修改包,所以,最好把这个包拿出来,放在文件中,在main.js直接引用

main.js 引用  import Print from '@/utils/vue-print-nb/'

新增

最近有收到问题,打印页面的标题是怎么设置的,我自己试了一下,发现使用之前的方法是undefined,去官网看了下,作者又修改了这个组件,现在变得更加可配置化了

现在传入的是一个对象,

打印内容比较多时,使用vue-print-nb可能会出现排版问题,

这里补充一种先转换成图片在打印的方法:

  • 轻轻的我走了,
  • 轻轻的我走了,
  • 轻轻的我走了,
  • 轻轻的我走了,
  • 轻轻的我走了,
  • 轻轻的我走了,
  • 轻轻的我走了,
  • 轻轻的我走了,

转图片打印

直接打印

data() {return{

img:'',

printObj: {

id:'printMe',

popTitle:'打印',

extraCss:'https://www.google.com,https://www.google.com',

extraHead:''}

}

},

watch: {

},

created() {

},

methods: {

toImg() { // 转图片打印

html2canvas(this.$refs.printContent, {

backgroundColor:null,

useCORS:true,

windowHeight: document.body.scrollHeight

}).then((canvas)=>{//let url = canvas.toDataURL('image/jpeg', 1.0)

const url =canvas.toDataURL()this.img =url

printJS({

printable: url,

type:'image',

documentTitle:'打印图片'})

console.log(url)

})

}

}

}

补充内容: 因为我自己有段时间没使用了,对于现在版本的一些问题也没遇到,最近有看到博友提了几个问题,

这两天有时间就看了下,下面把一些自己总结的问题和解决方法附上,可能图片比较多,不过我也是希望尽可能详细描述原因而不只是给个解决方法.

相关githup源码也会尽快更新,有帮助记得点歌star哦

PS: 因为这些问题是组件原本存在的,修改需要改组件源码,不要在node_modlues下直接修改,把这个vue-print-nb安装包复制出来,放在你自己的项目文件下,

一开始复制的时候可能没有src这个目录,没什么关系,运行一下就会自动生成的,拿出来之后,也要修改mian.js的引入方法,引入lib下的tag_textarea.umd这个文件

一. 打印多一页空白页

现在使用很有可能会多一页空白页,我自己看代码结合资料,是因为创建的iframe有height: 100%的元素,图片里的就是打印时生成的iframe元素

在页面看一下,因为我这个页面设置了HTML: height 100%,你可以看下你的页面,也可能是body 100%或者其他元素,这个打印组件是把你所有引入的css样式copy过去,所以也会继承你设置的样式

解决方法,给HTML设置一个高度,覆盖默认的100%

再次打印,我多增加了一些内容,也没有多一页空白页,这个高度设置不会影响你打印内容的真实高度,如果你实际有两页,这里也会是两页

这样,打印多一页空白页就解决了,这个方法是我这里测试有效,不能保证适用所有场景,不过多一页空白页,大概率就是有元素高度设置的问题

二.回调方法没有生效

回调方法是新版本增加的,我自己试了下,并不能生效,在代码里看了下,并没有调用传入的回调方法,也没有返回东西,在代码里加一下

组件引用:

页面打印

在这里更正一下,修改文件,因为我测试用的项目是有对es5语法进行转译的,tag_textarea.umd是es5语法,就可以使用,但是我之后放到另一个vue项目,引入报了es5的语法错误,

这里也非常感谢博友的评论提醒,差点误导大家,如果你的项目不支持es5语法,引入src下的文件,修改print.js和printarea.js这两个文件,改动地方一样可以搜索一下代码,我githup上

三.隐藏不需要打印的内容

如果打印的时候不需要打印全部内容,可以再打印之前,删除不需要打印的元素,具体方法

在print.js文件里新增一个属性ignoreClass,用来隐藏不需要打印的元素

在printarea.js里也要增加,再增加一个去除隐藏元素的方法

在组件使用时,传入这个元素

打印效果

GitHub 加速计划 / vu / vue
207.54 K
33.66 K
下载
vuejs/vue: 是一个用于构建用户界面的 JavaScript 框架,具有简洁的语法和丰富的组件库,可以用于开发单页面应用程序和多页面应用程序。
最近提交(Master分支:2 个月前 )
73486cb5 * chore: fix link broken Signed-off-by: snoppy <michaleli@foxmail.com> * Update packages/template-compiler/README.md [skip ci] --------- Signed-off-by: snoppy <michaleli@foxmail.com> Co-authored-by: Eduardo San Martin Morote <posva@users.noreply.github.com> 4 个月前
e428d891 Updated Browser Compatibility reference. The previous currently returns HTTP 404. 5 个月前
Logo

旨在为数千万中国开发者提供一个无缝且高效的云端环境,以支持学习、使用和贡献开源项目。

更多推荐