在使用electron调用打印方法contents.print时,遇到问题,需要调用多次才生效,
printWindow.webContents.print({ silent: false, printBackground: true},
(data) => {
console.log("回调", data);
项目使用的是electron 4.0.0版本,网上有人说是这个版本有bug,在github上找到临时解决方案,https://github.com/electron/electron/issues/16219
//使用该方法:打印时有时不生效,需要点击多次打印按钮,估计与electron 4.0.0版本有关
// printWindow.webContents.print({ silent: false, printBackground: true},
// (data) => {
// console.log("回调", data);
// })
//故使用以下方法调用打印
printWindow.webContents.executeJavaScript("window.print()");
或使用electron 4.0.0-beta.9版本解决
打印demo见https://github.com/dachuant/electron-print
在使用electron调用打印方法contents.print时,遇到问题,需要调用多次才生效,printWindow.webContents.print({ silent: false, printBackground: true}, (data) => { console.log("回调", data); })项目使用的是electron ...
在electron-react项目当中要实现打印部分页面内容的需求,
第一种方法是使用iframe标签打印,这种方法最简单网上有很多教程,使用iframe.contentWindow.print()这个方法会弹出打印对话框,我还没有找到关闭的方法,所以没有采用。
第二种方法是在使用electron的主线程调用webContents.print()方法,这个方法相对比较复杂,主线程和渲染线程直接需要通信。
流程如下:
主线程 :
window.print()打印是浏览器自带的打印,实现原理是将html转换为pdf可以在线预览打印或者导出pdf,在任何网页上可通过Ctil+p快捷键调出浏览器打印程序,它可将整个网页打印出来,在我们开发中,其实并不需要将所有页面打印出来,或者只需要局部的页面做打印,那我我们就自己实现window.print()打印功能。
浏览器自带的打印窗口(页眉页脚属于自带的,我们无法去掉,但是可以通过css将边距调小,将其覆盖掉)
打印常见的功能与问题处理
打印的功能以及布局全由css控制,在加上一些程序处理的业
最近electron-vue项目中遇到打印功能,但是利用浏览器原生的打印功能(window.print())又无法预览打印界面,用户体验极差。后来偶然发现lodop这个神奇的web打印插件,通过把lodop打印插件整合到项目中,解决了问题。不足的是为此用户需要增加一步安装lodop.exe文件的操作。
先生成图片:
lodop的预览功能:
正文开始,接下来说以下具体操作吧。
1. 前往lodop官网下载插件
下载解压后复制LodopFuncs.js到自己的electron-vue项目中(我是
需要换一种实现了,查到electron有静默打印的方式有两种
第一种:通过window的webcontent对象,使用此种方式需要单独开出一个打印的窗口,可以将该窗口隐藏,但是通信调用相对复杂
项目中用的是谷歌浏览器,js 执行window.print() 就会调用谷歌浏览器的打印功能。
打印其实打印的是整个当前网页,只是用媒体查询(@media print)把网页中要打印的内容做了显示,不打印的内容做了隐藏而已。
针式打印机由于存在失真问题,所以像有些边框颜色设置的比较浅的就没法打印出来,可以设置边框颜色深一点。
<!doctype html>
<html&...
被恶心了…
第一 . 打印, 部分打印.
直接打印 就调用 Window.print() 即可, 会打印你当前页面的内容, 但是这里存在一个问题, 有时候调用打印预览的时候 显示的是空白的页面, 这是因为 加载顺序的问题, 你的页面还没加载完成 但是打印的方法已经提交.
在需要打印内容 加一个div 标上ID 就行
bdhtml=window.document.body.innerHTM...
var style = document.createElement('style')
style.type = 'text/css'
style.innerHTML = '@page { size: landscape }'
document.head.appendChild(style)
// 执行打印操作
window.print()
3. 使用 Electron 的 webContents.print() 方法打印 WebView 内容。
```javascript
const { webContents } = require('electron')
const win = new BrowserWindow()
win.webContents.on('did-finish-load', () => {
// 执行注入样式表和打印操作
win.webContents.executeJavaScript(`
var style = document.createElement('style')
style.type = 'text/css'
style.innerHTML = '@page { size: landscape }'
document.head.appendChild(style)
window.print()
// 打印 WebView 内容
webContents.print({}, (success, errorType) => {
if (!success) console.log(`打印失败: ${errorType}`)
这样就可以在 Electron 应用程序中使用 WebView 打印横向页面了。
linux系统运行java项目报错Caused by: java.lang.NoSuchMethodError: org.apache.commons.io.IOUtils.closeQuietly
springboot 连接rabbitmq报错org.springframework.amqp.AmqpIOException: java.io.IOException
: silence:
springboot 连接rabbitmq报错org.springframework.amqp.AmqpIOException: java.io.IOException
weixin_52213940:
springboot 连接rabbitmq报错org.springframework.amqp.AmqpIOException: java.io.IOException
qq_39683071: